Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

Pull x86 fixes from Ingo Molnar:
"Three fixes, a hw-enablement and a cross-arch fix/enablement change:

- SGI/UV fix for older platforms

- x32 signal handling fix

- older x86 platform bootup APIC fix

- AVX512-4VNNIW (Neural Network Instructions) and AVX512-4FMAPS
(Multiply Accumulation Single precision instructions) enablement.

- move thread_info back into x86 specific code, to make life easier
for other architectures trying to make use of
CONFIG_THREAD_INFO_IN_TASK_STRUCT=y"

* 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
x86/boot/smp: Don't try to poke disabled/non-existent APIC
sched/core, x86: Make struct thread_info arch specific again
x86/signal: Remove bogus user_64bit_mode() check from sigaction_compat_abi()
x86/platform/UV: Fix support for EFI_OLD_MEMMAP after BIOS callback updates
x86/cpufeature: Add AVX512_4VNNIW and AVX512_4FMAPS features
x86/vmware: Skip timer_irq_works() check on VMware

+40 -22
+2
arch/x86/include/asm/cpufeatures.h
··· 194 194 #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ 195 195 196 196 #define X86_FEATURE_INTEL_PT ( 7*32+15) /* Intel Processor Trace */ 197 + #define X86_FEATURE_AVX512_4VNNIW (7*32+16) /* AVX-512 Neural Network Instructions */ 198 + #define X86_FEATURE_AVX512_4FMAPS (7*32+17) /* AVX-512 Multiply Accumulation Single precision */ 197 199 198 200 /* Virtualization flags: Linux defined, word 8 */ 199 201 #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */
+9
arch/x86/include/asm/thread_info.h
··· 52 52 #include <asm/cpufeature.h> 53 53 #include <linux/atomic.h> 54 54 55 + struct thread_info { 56 + unsigned long flags; /* low level flags */ 57 + }; 58 + 59 + #define INIT_THREAD_INFO(tsk) \ 60 + { \ 61 + .flags = 0, \ 62 + } 63 + 55 64 #define init_stack (init_thread_union.stack) 56 65 57 66 #else /* !__ASSEMBLY__ */
+2
arch/x86/kernel/cpu/scattered.c
··· 32 32 33 33 static const struct cpuid_bit cpuid_bits[] = { 34 34 { X86_FEATURE_INTEL_PT, CR_EBX,25, 0x00000007, 0 }, 35 + { X86_FEATURE_AVX512_4VNNIW, CR_EDX, 2, 0x00000007, 0 }, 36 + { X86_FEATURE_AVX512_4FMAPS, CR_EDX, 3, 0x00000007, 0 }, 35 37 { X86_FEATURE_APERFMPERF, CR_ECX, 0, 0x00000006, 0 }, 36 38 { X86_FEATURE_EPB, CR_ECX, 3, 0x00000006, 0 }, 37 39 { X86_FEATURE_HW_PSTATE, CR_EDX, 7, 0x80000007, 0 },
+5
arch/x86/kernel/cpu/vmware.c
··· 27 27 #include <asm/div64.h> 28 28 #include <asm/x86_init.h> 29 29 #include <asm/hypervisor.h> 30 + #include <asm/timer.h> 30 31 #include <asm/apic.h> 31 32 32 33 #define CPUID_VMWARE_INFO_LEAF 0x40000000 ··· 95 94 } else { 96 95 pr_warn("Failed to get TSC freq from the hypervisor\n"); 97 96 } 97 + 98 + #ifdef CONFIG_X86_IO_APIC 99 + no_timer_check = 1; 100 + #endif 98 101 } 99 102 100 103 /*
+2
arch/x86/kernel/fpu/xstate.c
··· 74 74 setup_clear_cpu_cap(X86_FEATURE_MPX); 75 75 setup_clear_cpu_cap(X86_FEATURE_XGETBV1); 76 76 setup_clear_cpu_cap(X86_FEATURE_PKU); 77 + setup_clear_cpu_cap(X86_FEATURE_AVX512_4VNNIW); 78 + setup_clear_cpu_cap(X86_FEATURE_AVX512_4FMAPS); 77 79 } 78 80 79 81 /*
-3
arch/x86/kernel/signal_compat.c
··· 105 105 /* Don't let flags to be set from userspace */ 106 106 act->sa.sa_flags &= ~(SA_IA32_ABI | SA_X32_ABI); 107 107 108 - if (user_64bit_mode(current_pt_regs())) 109 - return; 110 - 111 108 if (in_ia32_syscall()) 112 109 act->sa.sa_flags |= SA_IA32_ABI; 113 110 if (in_x32_syscall())
+9 -7
arch/x86/kernel/smpboot.c
··· 1409 1409 1410 1410 /* No boot processor was found in mptable or ACPI MADT */ 1411 1411 if (!num_processors) { 1412 - int apicid = boot_cpu_physical_apicid; 1413 - int cpu = hard_smp_processor_id(); 1412 + if (boot_cpu_has(X86_FEATURE_APIC)) { 1413 + int apicid = boot_cpu_physical_apicid; 1414 + int cpu = hard_smp_processor_id(); 1414 1415 1415 - pr_warn("Boot CPU (id %d) not listed by BIOS\n", cpu); 1416 + pr_warn("Boot CPU (id %d) not listed by BIOS\n", cpu); 1416 1417 1417 - /* Make sure boot cpu is enumerated */ 1418 - if (apic->cpu_present_to_apicid(0) == BAD_APICID && 1419 - apic->apic_id_valid(apicid)) 1420 - generic_processor_info(apicid, boot_cpu_apic_version); 1418 + /* Make sure boot cpu is enumerated */ 1419 + if (apic->cpu_present_to_apicid(0) == BAD_APICID && 1420 + apic->apic_id_valid(apicid)) 1421 + generic_processor_info(apicid, boot_cpu_apic_version); 1422 + } 1421 1423 1422 1424 if (!num_processors) 1423 1425 num_processors = 1;
+9 -1
arch/x86/platform/uv/bios_uv.c
··· 40 40 */ 41 41 return BIOS_STATUS_UNIMPLEMENTED; 42 42 43 - ret = efi_call_virt_pointer(tab, function, (u64)which, a1, a2, a3, a4, a5); 43 + /* 44 + * If EFI_OLD_MEMMAP is set, we need to fall back to using our old EFI 45 + * callback method, which uses efi_call() directly, with the kernel page tables: 46 + */ 47 + if (unlikely(test_bit(EFI_OLD_MEMMAP, &efi.flags))) 48 + ret = efi_call((void *)__va(tab->function), (u64)which, a1, a2, a3, a4, a5); 49 + else 50 + ret = efi_call_virt_pointer(tab, function, (u64)which, a1, a2, a3, a4, a5); 51 + 44 52 return ret; 45 53 } 46 54 EXPORT_SYMBOL_GPL(uv_bios_call);
-11
include/linux/thread_info.h
··· 14 14 struct compat_timespec; 15 15 16 16 #ifdef CONFIG_THREAD_INFO_IN_TASK 17 - struct thread_info { 18 - unsigned long flags; /* low level flags */ 19 - }; 20 - 21 - #define INIT_THREAD_INFO(tsk) \ 22 - { \ 23 - .flags = 0, \ 24 - } 25 - #endif 26 - 27 - #ifdef CONFIG_THREAD_INFO_IN_TASK 28 17 #define current_thread_info() ((struct thread_info *)current) 29 18 #endif 30 19
+2
tools/arch/x86/include/asm/cpufeatures.h
··· 194 194 #define X86_FEATURE_PROC_FEEDBACK ( 7*32+ 9) /* AMD ProcFeedbackInterface */ 195 195 196 196 #define X86_FEATURE_INTEL_PT ( 7*32+15) /* Intel Processor Trace */ 197 + #define X86_FEATURE_AVX512_4VNNIW (7*32+16) /* AVX-512 Neural Network Instructions */ 198 + #define X86_FEATURE_AVX512_4FMAPS (7*32+17) /* AVX-512 Multiply Accumulation Single precision */ 197 199 198 200 /* Virtualization flags: Linux defined, word 8 */ 199 201 #define X86_FEATURE_TPR_SHADOW ( 8*32+ 0) /* Intel TPR Shadow */