#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(-)


Reply via email to