diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c index f1d89b5b751cef730e40a68053a7facf41bff598..01c10796a05402783da357b62cdc30c7713c03d2 100644 --- a/arch/x86/kernel/apic/apic.c +++ b/arch/x86/kernel/apic/apic.c @@ -2582,6 +2582,13 @@ static int lapic_suspend(void) #endif local_irq_save(flags); + + /* + * Mask IOAPIC before disabling the local APIC to prevent stale IRR + * entries on some implementations. + */ + mask_ioapic_entries(); + disable_local_APIC(); irq_remapping_disable();