#PF/interrupts/system vectors Folks!
This is the fifth part of the rework series. Part 4 can be found here: https://lore.kernel.org/r/20200505134926.578885...@linutronix.de The series has a total of 138 patches and is split into 5 parts. The base for this 5th series is: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git entry-v4-part-4 The fifth part, i.e. the full series is available from: git://git.kernel.org/pub/scm/linux/kernel/git/tglx/devel.git entry-v4-part-5 This part contains the modifications for interrupts and exceptions and the final cleanups: - Conversion of the pagefault handler including conditional RCU entry handling which is also utilized for the optimized handling of the rescheduling IPI. - Conversion of interrupt and system vector handling to utilize the exception and traps entry code instead of having a completely separate implementation for no reason. - Moving the interrupt stack switching into C code to simplify the ordering vs. the entry mechanics. - Final cleanup and removal of all the ASM IRQ tracing maze. At the end this removes 750 lines of ASM and macro maze. 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 Known issues: There is an issue with the framepointer based unwinder. objtool complains about inconsistent stack state, and the actual unwinding accross a stack boundary contains the '?' markers. This is due to the stack switching in C inline ASM. The problem is halfways understood and worked on. This does not affect the rest of the series and will be fixed in the next days. With ORC both objtool and the actual unwinding works correctly. Thanks, tglx 8<---------- arch/x86/include/asm/acrn.h | 11 arch/x86/include/asm/entry_arch.h | 56 -- b/arch/x86/entry/calling.h | 25 - b/arch/x86/entry/common.c | 203 +++++++++- b/arch/x86/entry/entry_32.S | 260 +------------ b/arch/x86/entry/entry_64.S | 543 +---------------------------- b/arch/x86/entry/thunk_64.S | 9 b/arch/x86/hyperv/hv_init.c | 9 b/arch/x86/include/asm/apic.h | 33 - b/arch/x86/include/asm/hw_irq.h | 22 - b/arch/x86/include/asm/idtentry.h | 248 +++++++++++++ b/arch/x86/include/asm/irq.h | 6 b/arch/x86/include/asm/irq_stack.h | 91 ++++ b/arch/x86/include/asm/irq_work.h | 1 b/arch/x86/include/asm/irqflags.h | 10 b/arch/x86/include/asm/mshyperv.h | 13 b/arch/x86/include/asm/trace/common.h | 4 b/arch/x86/include/asm/trace/irq_vectors.h | 17 b/arch/x86/include/asm/traps.h | 21 - b/arch/x86/include/asm/uv/uv_bau.h | 8 b/arch/x86/kernel/apic/apic.c | 39 +- b/arch/x86/kernel/apic/msi.c | 3 b/arch/x86/kernel/apic/vector.c | 5 b/arch/x86/kernel/cpu/acrn.c | 9 b/arch/x86/kernel/cpu/mce/amd.c | 5 b/arch/x86/kernel/cpu/mce/therm_throt.c | 5 b/arch/x86/kernel/cpu/mce/threshold.c | 5 b/arch/x86/kernel/cpu/mshyperv.c | 22 - b/arch/x86/kernel/head_64.S | 7 b/arch/x86/kernel/idt.c | 42 +- b/arch/x86/kernel/irq.c | 46 -- b/arch/x86/kernel/irq_64.c | 54 ++ b/arch/x86/kernel/irq_work.c | 6 b/arch/x86/kernel/kvm.c | 14 b/arch/x86/kernel/nmi.c | 11 b/arch/x86/kernel/smp.c | 59 +-- b/arch/x86/kernel/tracepoint.c | 17 b/arch/x86/mm/fault.c | 69 ++- b/arch/x86/platform/uv/tlb_uv.c | 2 b/arch/x86/xen/enlighten_hvm.c | 12 b/arch/x86/xen/enlighten_pv.c | 2 b/arch/x86/xen/setup.c | 4 b/arch/x86/xen/smp_pv.c | 3 b/arch/x86/xen/xen-asm_32.S | 12 b/arch/x86/xen/xen-asm_64.S | 4 b/arch/x86/xen/xen-ops.h | 1 b/drivers/xen/events/events_base.c | 6 b/drivers/xen/preempt.c | 2 b/include/linux/hardirq.h | 31 + b/include/xen/events.h | 7 b/include/xen/xen-ops.h | 4 b/kernel/softirq.c | 35 + 52 files changed, 920 insertions(+), 1213 deletions(-)