[patch V4 part 4 00/24] x86/entry: Entry/exception code rework, nasty exceptions

From: Thomas Gleixner
Date: Tue May 05 2020 - 10:16:06 EST


Folks,

This is the forth part of the rework series. Part 3 can be found here:

https://lore.kernel.org/r/20200505134354.774943181@xxxxxxxxxxxxx

The series has a total of 138 patches and is split into 5 parts. The base
for this 4th series is:

git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git entry-v4-part-3

The full series with all parts applied is available here:

git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git entry-v4-part-5

The forth part, i.e. this series is available from:

git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git entry-v4-part-4

This part contains the modifications for complex and nasty exceptions and traps:

- Conversion of int3 including a full isolation of the text poke handler
so it is fully self contained, i.e does not call out into any
instrumentable code.

- Conversion of NMI handling including protection against instrumentation

- Conversion of #DB with separation of the user and kernel mode entries

- Conversion of #MC and #DF

The objtool check for the noinstr.text correctness is not yet added to the
build machinery and has to be invoked manually for now:

objtool check -fal vmlinux.o

The checking only works for builtin code as objtool cannot do a combined
analysis of vmlinux.o and a module.o

Thanks,

tglx

8<----------
arch/x86/entry/entry_32.S | 38 ----
arch/x86/entry/entry_64.S | 35 +---
arch/x86/include/asm/desc.h | 8
arch/x86/include/asm/idtentry.h | 235 +++++++++++++++++++++++++++++
arch/x86/include/asm/mce.h | 2
arch/x86/include/asm/ptrace.h | 2
arch/x86/include/asm/text-patching.h | 11 -
arch/x86/include/asm/traps.h | 23 --
arch/x86/kernel/alternative.c | 25 +--
arch/x86/kernel/cpu/common.c | 6
arch/x86/kernel/cpu/mce/core.c | 91 ++++++++---
arch/x86/kernel/cpu/mce/inject.c | 4
arch/x86/kernel/cpu/mce/internal.h | 2
arch/x86/kernel/cpu/mce/p5.c | 8
arch/x86/kernel/cpu/mce/winchip.c | 8
arch/x86/kernel/doublefault_32.c | 10 -
arch/x86/kernel/hw_breakpoint.c | 6
arch/x86/kernel/idt.c | 22 +-
arch/x86/kernel/nmi.c | 14 -
arch/x86/kernel/traps.c | 283 ++++++++++++++++++++++++-----------
arch/x86/kvm/vmx/vmx.c | 2
arch/x86/xen/enlighten_pv.c | 17 +-
arch/x86/xen/xen-asm_64.S | 12 -
include/linux/bsearch.h | 26 ++-
kernel/time/timekeeping.c | 2
lib/bsearch.c | 22 --
26 files changed, 615 insertions(+), 299 deletions(-)