diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h index 29559831c94f2..43849c3d62751 100644 --- a/arch/x86/include/asm/apic.h +++ b/arch/x86/include/asm/apic.h @@ -710,9 +710,8 @@ static inline void exiting_irq(void) static inline void exiting_ack_irq(void) { - irq_exit(); - /* Ack only at the end to avoid potential reentry */ ack_APIC_irq(); + irq_exit(); } extern void ioapic_zap_locks(void); diff --git a/arch/x86/kernel/smp.c b/arch/x86/kernel/smp.c index 7c3a5a61f2e46..e5d895fa1fe0a 100644 --- a/arch/x86/kernel/smp.c +++ b/arch/x86/kernel/smp.c @@ -267,8 +267,8 @@ __visible void smp_reschedule_interrupt(struct pt_regs *regs) static inline void smp_entering_irq(void) { - ack_APIC_irq(); irq_enter(); + ack_APIC_irq(); } __visible void smp_trace_reschedule_interrupt(struct pt_regs *regs)