linux_dsm_epyc7002/arch/x86/kernel
Andy Lutomirski 4ba55e65f4 x86/mm/32: Load a sane CR3 before cpu_init() on secondary CPUs
For unknown historical reasons (i.e. Borislav doesn't recall),
32-bit kernels invoke cpu_init() on secondary CPUs with
initial_page_table loaded into CR3.  Then they set
current->active_mm to &init_mm and call enter_lazy_tlb() before
fixing CR3.  This means that the x86 TLB code gets invoked while CR3
is inconsistent, and, with the improved PCID sanity checks I added,
we warn.

Fix it by loading swapper_pg_dir (i.e. init_mm.pgd) earlier.

Reported-by: Paul Menzel <pmenzel@molgen.mpg.de>
Reported-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: Borislav Petkov <bpetkov@suse.de>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Fixes: 72c0098d92 ("x86/mm: Reinitialize TLB state on hotplug and resume")
Link: http://lkml.kernel.org/r/30cdfea504682ba3b9012e77717800a91c22097f.1505663533.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-09-17 18:59:09 +02:00
..
acpi dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
apic Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-09-12 11:34:39 -07:00
cpu x86/mm/32: Move setup_clear_cpu_cap(X86_FEATURE_PCID) earlier 2017-09-17 18:59:08 +02:00
fpu
kprobes kprobes/x86: Do not jump-optimize kprobes on irq entry code 2017-08-10 16:28:53 +02:00
.gitignore
alternative.c x86: Clarify/fix no-op barriers for text_poke_bp() 2017-08-10 17:35:19 +02:00
amd_gart_64.c x86: remove arch specific dma_supported implementation 2017-06-28 06:54:46 -07:00
amd_nb.c
apb_timer.c
aperture_64.c
apm_32.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
asm-offsets_32.c x86/lguest: Remove lguest support 2017-08-24 09:57:28 +02:00
asm-offsets_64.c x86/xen: Get rid of paravirt op adjust_exception_frame 2017-08-31 21:35:10 +02:00
asm-offsets.c
audit_64.c
bootflag.c
check.c
cpuid.c
crash_dump_32.c
crash_dump_64.c
crash.c kexec: move vmcoreinfo out of the kernel's .bss section 2017-07-12 16:25:59 -07:00
devicetree.c x86/devicetree: Convert to using %pOF instead of ->full_name 2017-07-21 10:14:15 +02:00
doublefault.c
dumpstack_32.c x86/dumpstack: Fix interrupt and exception stack boundary checks 2017-07-18 10:56:23 +02:00
dumpstack_64.c x86/dumpstack: Fix interrupt and exception stack boundary checks 2017-07-18 10:56:23 +02:00
dumpstack.c x86/asm/32: Remove a bunch of '& 0xffff' from pt_regs segment reads 2017-07-30 12:04:41 +02:00
e820.c x86/boot/e820: Add support to determine the E820 type of an address 2017-07-18 11:38:01 +02:00
early_printk.c
early-quirks.c ACPI updates for v4.14-rc1 2017-09-05 12:45:03 -07:00
ebda.c
eisa.c x86/eisa: Add missing include 2017-08-31 21:34:48 +02:00
espfix_64.c x86/mm: Provide general kernel support for memory encryption 2017-07-18 11:38:00 +02:00
ftrace_32.S
ftrace_64.S
ftrace.c
head32.c x86/idt: Move early IDT setup out of 32-bit asm 2017-08-29 12:07:26 +02:00
head64.c Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-09-04 17:43:56 -07:00
head_32.S x86/idt: Remove superfluous ALIGNment 2017-08-31 15:47:02 +02:00
head_64.S x86/mm: Provide general kernel support for memory encryption 2017-07-18 11:38:00 +02:00
hpet.c x86/hpet: Cure interface abuse in the resume path 2017-08-01 13:02:37 +02:00
hw_breakpoint.c
i8237.c
i8253.c
i8259.c
idt.c x86/idt: Fix the X86_TRAP_BP gate 2017-09-01 11:04:56 +02:00
io_delay.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
ioport.c
irq_32.c
irq_64.c
irq_work.c x86/irq_work: Make it depend on APIC 2017-08-29 11:42:30 +02:00
irq.c x86/ipi: Make platform IPI depend on APIC 2017-08-29 11:42:29 +02:00
irqinit.c x86/idt: Move interrupt gate initialization to IDT code 2017-08-29 12:07:28 +02:00
itmt.c
jump_label.c
kdebugfs.c x86, mpparse, x86/acpi, x86/PCI, x86/dmi, SFI: Use memremap() for RAM mappings 2017-07-18 11:37:58 +02:00
kexec-bzimage64.c x86/boot/e820: Rename the e820_table_firmware to e820_table_kexec 2017-07-05 10:09:02 +02:00
kgdb.c
ksysfs.c Merge branch 'linus' into x86/mm to pick up fixes and to fix conflicts 2017-08-26 09:19:13 +02:00
kvm.c kvm,x86: Fix apf_task_wake_one() wq serialization 2017-09-15 16:57:12 +02:00
kvmclock.c
ldt.c x86/ldt/64: Refresh DS and ES when modify_ldt changes an entry 2017-07-27 09:12:57 +02:00
livepatch.c
machine_kexec_32.c x86/idt: Consolidate IDT invalidation 2017-08-29 12:07:26 +02:00
machine_kexec_64.c x86/mm, kexec: Fix memory corruption with SME on successive kexecs 2017-07-30 12:09:12 +02:00
Makefile x86/idt: Create file for IDT related code 2017-08-29 12:07:25 +02:00
mmconf-fam10h_64.c
module.c x86/unwind: Add the ORC unwinder 2017-07-26 13:18:20 +02:00
mpparse.c x86/boot: Use memremap() to map the MPF and MPC data 2017-07-18 11:38:02 +02:00
msr.c
nmi_selftest.c
nmi.c x86/nmi: Use raw lock 2017-08-16 20:40:09 +02:00
paravirt_patch_32.c
paravirt_patch_64.c
paravirt-spinlocks.c
paravirt.c x86/paravirt: Remove no longer used paravirt functions 2017-09-13 10:55:15 +02:00
pci-calgary_64.c x86: remove arch specific dma_supported implementation 2017-06-28 06:54:46 -07:00
pci-dma.c x86, swiotlb: Add memory encryption support 2017-07-18 11:38:03 +02:00
pci-iommu_table.c
pci-nommu.c x86, swiotlb: Add memory encryption support 2017-07-18 11:38:03 +02:00
pci-swiotlb.c x86, swiotlb: Add memory encryption support 2017-07-18 11:38:03 +02:00
pcspeaker.c
perf_regs.c
platform-quirks.c x86/lguest: Remove lguest support 2017-08-24 09:57:28 +02:00
pmem.c
probe_roms.c
process_32.c Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-09-04 13:56:37 -07:00
process_64.c Merge branch 'x86-cache-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-09-04 13:56:37 -07:00
process.c x86/mm, kexec: Allow kexec to be used with SME 2017-07-18 11:38:04 +02:00
ptrace.c
pvclock.c
quirks.c treewide: Consolidate Apple DMI checks 2017-08-03 23:26:22 +02:00
reboot_fixups_32.c
reboot.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
relocate_kernel_32.S
relocate_kernel_64.S x86/mm, kexec: Fix memory corruption with SME on successive kexecs 2017-07-30 12:09:12 +02:00
resource.c
rtc.c
setup_percpu.c treewide: make "nr_cpu_ids" unsigned 2017-09-08 18:26:48 -07:00
setup.c x86/mm/64: Initialize CR4.PCIDE early 2017-09-13 09:54:43 +02:00
signal_compat.c signal: Remove kernel interal si_code magic 2017-07-24 14:30:28 -05:00
signal.c x86/asm/32: Remove a bunch of '& 0xffff' from pt_regs segment reads 2017-07-30 12:04:41 +02:00
smp.c x86/tracing: Disentangle pagefault and resched IPI tracing key 2017-08-29 11:42:29 +02:00
smpboot.c x86/mm/32: Load a sane CR3 before cpu_init() on secondary CPUs 2017-09-17 18:59:09 +02:00
stacktrace.c
step.c x86/asm/32: Remove a bunch of '& 0xffff' from pt_regs segment reads 2017-07-30 12:04:41 +02:00
sys_x86_64.c x86/mm: Prepare to expose larger address space to userspace 2017-07-21 10:05:18 +02:00
sysfb_efi.c
sysfb_simplefb.c
sysfb.c
tboot.c
tce_64.c
time.c
tls.c x86/asm: Replace access to desc_struct:a/b fields 2017-08-29 12:07:25 +02:00
tls.h
topology.c
trace_clock.c
tracepoint.c x86/tracing: Disentangle pagefault and resched IPI tracing key 2017-08-29 11:42:29 +02:00
traps.c x86/idt: Move regular trap init to tables 2017-08-29 12:07:27 +02:00
tsc_msr.c
tsc_sync.c
tsc.c Merge branch 'x86-timers-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-07-03 18:01:50 -07:00
unwind_frame.c Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2017-09-04 09:52:57 -07:00
unwind_guess.c x86/unwind: Add the ORC unwinder 2017-07-26 13:18:20 +02:00
unwind_orc.c x86/unwind: Add the ORC unwinder 2017-07-26 13:18:20 +02:00
uprobes.c
verify_cpu.S
vm86_32.c
vmlinux.lds.S x86/unwind: Add the ORC unwinder 2017-07-26 13:18:20 +02:00
vsmp_64.c
x86_init.c