[PATCH v3 0/7] x86: Pile o' FS/GS changes

From: Andy Lutomirski
Date: Thu Apr 07 2016 - 20:32:11 EST


Hi all-

This whole mess is intended for x86/urgent. It fixes several bugs.

It's probably a tiny performance regression on some workloads on
Intel CPUs. It's probably varies between a less tiny regression and
a small speedup on newer AMD CPUs. It's a bigger regression on AMD
K8.

The AMD code could be further sped up by adding a new 'clear_gs'
pvop with a better native implementation. I don't particularly want
to deal with a backported new pvop, so I didn't do that. Maybe I'll
do it later on for new kernels, though.

(For people who care about such things, there are probably three
bugs in here depending how you count. Somewhere between one and two
of them were independently discovered by Rudolf Marek.)

Andy Lutomirski (5):
selftests/x86: Test the FSBASE/GSBASE API and context switching
x86/arch_prctl: Fix ARCH_GET_FS and ARCH_GET_GS
x86/cpu: Probe the behavior of nulling out a segment at boot time
x86/switch_to: Rewrite the FS and GS context switch code
x86/cpu: Move X86_BUG_ESPFIX initialization to generic_identify

Borislav Petkov (2):
x86/cpu: Add Erratum 88 detection on AMD
x86/entry: Make gs_change a local label

arch/x86/entry/entry_64.S | 12 +-
arch/x86/include/asm/cpufeatures.h | 3 +
arch/x86/kernel/cpu/amd.c | 1 +
arch/x86/kernel/cpu/common.c | 71 ++++--
arch/x86/kernel/process_64.c | 167 ++++++++------
tools/testing/selftests/x86/Makefile | 1 +
tools/testing/selftests/x86/fsgsbase.c | 398 +++++++++++++++++++++++++++++++++
7 files changed, 560 insertions(+), 93 deletions(-)
create mode 100644 tools/testing/selftests/x86/fsgsbase.c

--
2.5.5