mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
x86/fred: Install system vector handlers even if FRED isn't fully enabled
Install the system vector IRQ handlers for FRED even if FRED isn't fully enabled in hardware. This will allow KVM to use the FRED IRQ path even on non-FRED hardware, which in turn will eliminate a non-CFI indirect CALL (KVM currently invokes the IRQ handler via an IDT lookup on the vector). [sean: extract from diff, drop stub, write changelog] Signed-off-by: Sean Christopherson <seanjc@google.com> Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org> Link: https://lkml.kernel.org/r/20250714103441.121251108@infradead.org
This commit is contained in:
parent
c8ed081264
commit
2d1435b742
|
|
@ -460,17 +460,12 @@ __visible noinstr void func(struct pt_regs *regs, \
|
|||
#endif
|
||||
|
||||
void idt_install_sysvec(unsigned int n, const void *function);
|
||||
|
||||
#ifdef CONFIG_X86_FRED
|
||||
void fred_install_sysvec(unsigned int vector, const idtentry_t function);
|
||||
#else
|
||||
static inline void fred_install_sysvec(unsigned int vector, const idtentry_t function) { }
|
||||
#endif
|
||||
|
||||
#define sysvec_install(vector, function) { \
|
||||
if (cpu_feature_enabled(X86_FEATURE_FRED)) \
|
||||
if (IS_ENABLED(CONFIG_X86_FRED)) \
|
||||
fred_install_sysvec(vector, function); \
|
||||
else \
|
||||
if (!cpu_feature_enabled(X86_FEATURE_FRED)) \
|
||||
idt_install_sysvec(vector, asm_##function); \
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -97,9 +97,11 @@ void __init native_init_IRQ(void)
|
|||
/* Execute any quirks before the call gates are initialised: */
|
||||
x86_init.irqs.pre_vector_init();
|
||||
|
||||
if (cpu_feature_enabled(X86_FEATURE_FRED))
|
||||
/* FRED's IRQ path may be used even if FRED isn't fully enabled. */
|
||||
if (IS_ENABLED(CONFIG_X86_FRED))
|
||||
fred_complete_exception_setup();
|
||||
else
|
||||
|
||||
if (!cpu_feature_enabled(X86_FEATURE_FRED))
|
||||
idt_setup_apic_and_irq_gates();
|
||||
|
||||
lapic_assign_system_vectors();
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user