linux/arch/x86/kernel
Andy Lutomirski 20bb83443e x86/entry/64: Stop initializing TSS.sp0 at boot
In my quest to get rid of thread_struct::sp0, I want to clean up or
remove all of its readers.  Two of them are in cpu_init() (32-bit and
64-bit), and they aren't needed.  This is because we never enter
userspace at all on the threads that CPUs are initialized in.

Poison the initial TSS.sp0 and stop initializing it on CPU init.

The comment text mostly comes from Dave Hansen.  Thanks!

Signed-off-by: Andy Lutomirski <luto@kernel.org>
Cc: Borislav Petkov <bpetkov@suse.de>
Cc: Brian Gerst <brgerst@gmail.com>
Cc: Dave Hansen <dave.hansen@intel.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Link: http://lkml.kernel.org/r/ee4a00540ad28c6cff475fbcc7769a4460acc861.1509609304.git.luto@kernel.org
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2017-11-02 11:04:46 +01:00
..
acpi dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
apic x86/apic: Update TSC_DEADLINE quirk with additional SKX stepping 2017-10-12 17:10:11 +02:00
cpu x86/entry/64: Stop initializing TSS.sp0 at boot 2017-11-02 11:04:46 +01:00
fpu x86/fpu: Remove the explicit clearing of XSAVE dependent features 2017-10-17 17:14:57 +02:00
kprobes kprobes/x86: Remove IRQ disabling from jprobe handlers 2017-10-03 19:11:48 +02:00
.gitignore
Makefile Merge branch 'core/objtool' into x86/asm, to pick up dependent changes 2017-10-23 13:31:17 +02:00
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 x86/cpu/AMD: Apply the Erratum 688 fix when the BIOS doesn't 2017-10-22 13:06:02 +02:00
apb_timer.c Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-25 14:30:04 -08:00
aperture_64.c x86/boot/e820: Prefix the E820_* type names with "E820_TYPE_" 2017-01-28 22:55:22 +01:00
apm_32.c dmi: Mark all struct dmi_system_id instances const 2017-09-14 11:59:30 +02:00
asm-offsets.c efi: Get and store the secure boot status 2017-02-07 10:42:10 +01: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
audit_64.c
bootflag.c
check.c
cpuid.c Merge branch 'smp-hotplug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2016-12-12 19:25:04 -08:00
crash.c kexec: move vmcoreinfo out of the kernel's .bss section 2017-07-12 16:25:59 -07:00
crash_dump_32.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
crash_dump_64.c
devicetree.c x86/devicetree: Convert to using %pOF instead of ->full_name 2017-07-21 10:14:15 +02:00
doublefault.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/debug.h> 2017-03-02 08:42:34 +01:00
dumpstack.c x86/asm/32: Remove a bunch of '& 0xffff' from pt_regs segment reads 2017-07-30 12:04:41 +02:00
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
e820.c x86/boot/e820: Add support to determine the E820 type of an address 2017-07-18 11:38:01 +02:00
early-quirks.c ACPI updates for v4.14-rc1 2017-09-05 12:45:03 -07:00
early_printk.c x86/earlyprintk: Add support for earlyprintk via USB3 debug port 2017-03-21 12:30:16 +01: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.c x86/ftrace: Make sure that ftrace trampolines are not RWX 2017-05-26 22:37:02 -04:00
ftrace_32.S x86/ftrace: Fix ebp in ftrace_regs_caller that screws up unwinder 2017-04-21 09:48:16 +02:00
ftrace_64.S x86/ftrace: Use Makefile logic instead of #ifdef for compiling ftrace_*.o 2017-03-24 10:14:08 +01:00
head32.c x86/idt: Initialize early IDT before cr4_init_shadow() 2017-10-16 20:47:37 +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 Merge branch 'x86/mpx/prep' into x86/asm 2017-11-02 10:57:24 +01:00
head_64.S x86/entry/64: Split the IRET-to-user and IRET-to-kernel paths 2017-11-02 11:04:37 +01: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 x86: i8259: export legacy_pic symbol 2017-04-14 12:08:51 +02:00
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 Second batch of KVM changes for 4.11 merge window 2017-03-04 11:36:19 -08:00
irq.c x86/ipi: Make platform IPI depend on APIC 2017-08-29 11:42:29 +02:00
irq_32.c x86/asm: Use register variable to get stack pointer value 2017-09-29 19:39:44 +02:00
irq_64.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
irq_work.c x86/irq_work: Make it depend on APIC 2017-08-29 11:42:30 +02:00
irqinit.c x86/idt: Move interrupt gate initialization to IDT code 2017-08-29 12:07:28 +02:00
itmt.c sched/x86: Remove unnecessary TBM3 check to update topology 2017-01-19 08:42:37 +01:00
jump_label.c jump_label: Reorder hotplug lock and jump_label_lock 2017-05-26 10:10:45 +02:00
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 sched/x86: Add 'struct inactive_task_frame' to better document the sleeping task stack frame 2016-08-24 12:27:41 +02:00
ksysfs.c x86/sysfs: Fix off-by-one error in loop termination 2017-09-25 09:36:16 +02:00
kvm.c kvm/x86: Avoid async PF preempting the kernel incorrectly 2017-10-04 18:28:53 +02:00
kvmclock.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/clock.h> 2017-03-02 08:42:27 +01:00
ldt.c x86/entry: Use SYSCALL_DEFINE() macros for sys_modify_ldt() 2017-10-20 10:37:33 +02:00
livepatch.c livepatch/x86: apply alternatives and paravirt patches after relocations 2016-08-18 23:41:55 +02:00
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
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 x86/msr: Remove bogus cleanup from the error path 2016-12-25 10:47:41 +01:00
nmi.c x86/nmi: Use raw lock 2017-08-16 20:40:09 +02:00
nmi_selftest.c x86/nmi: Fix timeout test in test_nmi_ipi() 2017-06-20 12:52:43 +02:00
paravirt-spinlocks.c 4.11 is going to be a relatively large release for KVM, with a little over 2017-02-22 18:22:53 -08:00
paravirt.c x86/paravirt: Remove no longer used paravirt functions 2017-09-13 10:55:15 +02:00
paravirt_patch_32.c x86/paravirt: Mark unused patch_default label 2016-12-22 17:43:35 +01:00
paravirt_patch_64.c x86/paravirt: Mark unused patch_default label 2016-12-22 17:43:35 +01: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 sched/headers: Prepare for new header dependencies before moving code to <linux/sched/task_stack.h> 2017-03-02 08:42:36 +01:00
platform-quirks.c x86/lguest: Remove lguest support 2017-08-24 09:57:28 +02:00
pmem.c
probe_roms.c x86/boot/e820: Move asm/e820.h to asm/e820/api.h 2017-01-28 09:31:13 +01:00
process.c x86/entry/64: Stop initializing TSS.sp0 at boot 2017-11-02 11:04:46 +01:00
process_32.c x86/entry/64: Pass SP0 directly to load_sp0() 2017-11-02 11:04:44 +01:00
process_64.c x86/entry/64: Pass SP0 directly to load_sp0() 2017-11-02 11:04:44 +01:00
ptrace.c x86/arch_prctl/64: Rename do_arch_prctl() to do_arch_prctl_64() 2017-03-20 16:10:32 +01:00
pvclock.c sched/headers: Prepare for new header dependencies before moving code to <linux/sched/nmi.h> 2017-03-02 08:42:30 +01:00
quirks.c treewide: Consolidate Apple DMI checks 2017-08-03 23:26:22 +02:00
reboot.c x86/mm/64: Fix reboot interaction with CR4.PCIDE 2017-10-09 13:31:04 +02:00
reboot_fixups_32.c
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 x86/boot/e820: Harmonize the 'struct e820_table' fields 2017-01-28 09:33:16 +01:00
rtc.c timekeeping: Ignore the bogus sleep time if pm_trace is enabled 2016-11-29 18:02:58 +01:00
setup.c x86/mm/64: Initialize CR4.PCIDE early 2017-09-13 09:54:43 +02:00
setup_percpu.c treewide: make "nr_cpu_ids" unsigned 2017-09-08 18:26:48 -07:00
signal.c x86/fpu: Rename fpu::fpstate_active to fpu::initialized 2017-09-26 09:43:36 +02:00
signal_compat.c signal: Remove kernel interal si_code magic 2017-07-24 14:30:28 -05: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 stacktrace/x86: add function for detecting reliable stack traces 2017-03-08 09:18:02 +01:00
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.c
sysfb_efi.c
sysfb_simplefb.c x86/sysfb: Fix lfb_size calculation 2016-11-16 09:38:23 +01:00
tboot.c iommu/vt-d: Correctly disable Intel IOMMU force on 2017-06-15 16:41:10 +02:00
tce_64.c
time.c x86/time: Make setup_default_timer_irq() static 2017-06-13 08:42:09 +02:00
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/asm: Use register variable to get stack pointer value 2017-09-29 19:39:44 +02:00
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
tsc_msr.c x86/tsc: Set TSC_KNOWN_FREQ and TSC_RELIABLE flags on Intel Atom SoCs 2016-11-18 10:58:31 +01:00
tsc_sync.c x86/tsc: Remove the TSC_ADJUST clamp 2017-06-04 21:55:53 +02:00
unwind_frame.c x86/unwind: Disable unwinder warnings on 32-bit 2017-10-10 12:49:49 +02:00
unwind_guess.c x86/unwind: Add the ORC unwinder 2017-07-26 13:18:20 +02:00
unwind_orc.c x86/unwind: Show function name+offset in ORC error messages 2017-10-23 13:30:36 +02:00
uprobes.c uprobes/x86: Fix RIP-relative handling of EVEX-encoded instructions 2016-08-12 08:29:24 +02:00
verify_cpu.S x86/boot: Annotate verify_cpu() as a callable function 2017-09-28 09:39:03 +02:00
vm86_32.c x86/entry/64: Pass SP0 directly to load_sp0() 2017-11-02 11:04:44 +01:00
vmlinux.lds.S x86/unwind: Add the ORC unwinder 2017-07-26 13:18:20 +02:00
vsmp_64.c
x86_init.c x86/boot/e820: Rename default_machine_specific_memory_setup() to e820__memory_setup_default() 2017-01-28 14:42:26 +01:00