Messages in this thread | | | From | "H. Peter Anvin" <> | Subject | [PATCH v2 0/8] x86/irq: trap and interrupt cleanups | Date | Fri, 14 May 2021 18:43:52 -0700 |
| |
From: "H. Peter Anvin (Intel)" <hpa@zytor.com>
A collection of trap/interrupt-related patches, almost all cleanups. It does remove a modest amount of code (39 lines.) The only patches that should have any possible effect at all are:
7/8 - x86/irq: WARN_ONCE() if irq_move_cleanup is called on a pending interrupt
This condition is believed to be impossible after many improvements to the IRQ vector allocation code since this function was written. Per discussion with tglx, add a WARN_ONCE() if this happens as a first step towards excising this hack.
8/8 - x86/irq: merge and functonalize common code in DECLARE/DEFINE_IDTENTRY_*
This patch reverses kvm_set_cpu_l1tf_flush_l1d() and __irq_enter_raw() in DEFINE_IDTENTRY_SYSVEC_SIMPLE() in order to be able to unify the code with DEFINE_IDTENTRY_SYSVEC().
This replaces a lot of macros with inline functions, which required some amount of adjusting types in various places, they should have no effect.
The reason for unification is mainly to avoid the possibility of inadvertent divergence rather than the rather modest amount of code, but it does remove 25 lines of code.
--- 1/8 x86/irq: merge and functionalize common code in DECLARE/DEFINE_IDTENTRY_* 2/8 x86/irq: WARN_ONCE() if irq_move_cleanup is called on a pending interrupt 3/8 x86/kexec: set_[gi]dt() -> native_[gi]dt_invalidate() in machine_kexec_*.c 4/8 x86/desc: add native_[ig]dt_invalidate() to <asm/desc.h> 5/8 x86/idt: remove address argument to idt_invalidate() 6/8 x86/irq: remove unused vectors from <asm/irq_vectors.h> 7/8 x86/irqvector: add NR_EXTERNAL_VECTORS and NR_SYSTEM_VECTORS 8/8 x86/traps: add X86_NR_HW_TRAPS to <asm/trapnr.h>
arch/x86/entry/common.c | 5 +- arch/x86/include/asm/desc.h | 17 ++- arch/x86/include/asm/idtentry.h | 174 +++++++++++++++---------------- arch/x86/include/asm/irq_stack.h | 73 +++++-------- arch/x86/include/asm/irq_vectors.h | 7 +- arch/x86/include/asm/trapnr.h | 1 + arch/x86/kernel/apic/apic.c | 2 +- arch/x86/kernel/apic/vector.c | 5 + arch/x86/kernel/idt.c | 5 +- arch/x86/kernel/irq.c | 1 + arch/x86/kernel/machine_kexec_32.c | 15 +-- arch/x86/kernel/machine_kexec_64.c | 33 +----- arch/x86/kernel/reboot.c | 2 +- arch/x86/kernel/sev-es.c | 6 +- arch/x86/kernel/traps.c | 2 +- tools/arch/x86/include/asm/irq_vectors.h | 7 +- 16 files changed, 158 insertions(+), 197 deletions(-)
| |