Skip to content

Commit

Permalink
x86/apic: Disable I/O APIC before shutdown of the local APIC
Browse files Browse the repository at this point in the history
In reboot and crash path, when we shut down the local APIC, the I/O APIC is
still active. This may cause issues because external interrupts
can still come in and disturb the local APIC during shutdown process.

To quiet external interrupts, disable I/O APIC before shutdown local APIC.

Signed-off-by: Fenghua Yu <fenghua.yu@intel.com>
Link: http://lkml.kernel.org/r/1382578212-4677-1-git-send-email-fenghua.yu@intel.com
Cc: <stable@kernel.org>
[ I suppose the 'issue' is a hang during shutdown. It's a fine change nevertheless. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
  • Loading branch information
Fenghua Yu authored and Ingo Molnar committed Nov 7, 2013
1 parent 5e01dc7 commit 522e664
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 5 deletions.
2 changes: 1 addition & 1 deletion arch/x86/kernel/crash.c
Original file line number Diff line number Diff line change
Expand Up @@ -127,12 +127,12 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
cpu_emergency_vmxoff();
cpu_emergency_svm_disable();

lapic_shutdown();
#ifdef CONFIG_X86_IO_APIC
/* Prevent crash_kexec() from deadlocking on ioapic_lock. */
ioapic_zap_locks();
disable_IO_APIC();
#endif
lapic_shutdown();
#ifdef CONFIG_HPET_TIMER
hpet_disable();
#endif
Expand Down
8 changes: 4 additions & 4 deletions arch/x86/kernel/reboot.c
Original file line number Diff line number Diff line change
Expand Up @@ -550,6 +550,10 @@ static void native_machine_emergency_restart(void)
void native_machine_shutdown(void)
{
/* Stop the cpus and apics */
#ifdef CONFIG_X86_IO_APIC
disable_IO_APIC();
#endif

#ifdef CONFIG_SMP
/*
* Stop all of the others. Also disable the local irq to
Expand All @@ -562,10 +566,6 @@ void native_machine_shutdown(void)

lapic_shutdown();

#ifdef CONFIG_X86_IO_APIC
disable_IO_APIC();
#endif

#ifdef CONFIG_HPET_TIMER
hpet_disable();
#endif
Expand Down

0 comments on commit 522e664

Please sign in to comment.