aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2013-11-11 20:37:53 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2013-11-11 20:37:53 -0500
commitb7ab6e3d21b17a5b488aeb49bd415a9433b8a79e (patch)
tree172324cee4eb8f53fa0f949a337ed3c43c5acdbd
parent87093826aa0172d9135ca1f301c4298a258ceee6 (diff)
parent522e66464467543c0d88d023336eec4df03ad40b (diff)
Merge branch 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86/apic fix from Ingo Molnar: "A single fix to the IO-APIC / local-APIC shutdown sequence" * 'x86-apic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: x86/apic: Disable I/O APIC before shutdown of the local APIC
-rw-r--r--arch/x86/kernel/crash.c2
-rw-r--r--arch/x86/kernel/reboot.c8
2 files changed, 5 insertions, 5 deletions
diff --git a/arch/x86/kernel/crash.c b/arch/x86/kernel/crash.c
index e0e0841eef45..18677a90d6a3 100644
--- a/arch/x86/kernel/crash.c
+++ b/arch/x86/kernel/crash.c
@@ -127,12 +127,12 @@ void native_machine_crash_shutdown(struct pt_regs *regs)
127 cpu_emergency_vmxoff(); 127 cpu_emergency_vmxoff();
128 cpu_emergency_svm_disable(); 128 cpu_emergency_svm_disable();
129 129
130 lapic_shutdown();
131#ifdef CONFIG_X86_IO_APIC 130#ifdef CONFIG_X86_IO_APIC
132 /* Prevent crash_kexec() from deadlocking on ioapic_lock. */ 131 /* Prevent crash_kexec() from deadlocking on ioapic_lock. */
133 ioapic_zap_locks(); 132 ioapic_zap_locks();
134 disable_IO_APIC(); 133 disable_IO_APIC();
135#endif 134#endif
135 lapic_shutdown();
136#ifdef CONFIG_HPET_TIMER 136#ifdef CONFIG_HPET_TIMER
137 hpet_disable(); 137 hpet_disable();
138#endif 138#endif
diff --git a/arch/x86/kernel/reboot.c b/arch/x86/kernel/reboot.c
index 7e920bff99a3..618ce264b237 100644
--- a/arch/x86/kernel/reboot.c
+++ b/arch/x86/kernel/reboot.c
@@ -550,6 +550,10 @@ static void native_machine_emergency_restart(void)
550void native_machine_shutdown(void) 550void native_machine_shutdown(void)
551{ 551{
552 /* Stop the cpus and apics */ 552 /* Stop the cpus and apics */
553#ifdef CONFIG_X86_IO_APIC
554 disable_IO_APIC();
555#endif
556
553#ifdef CONFIG_SMP 557#ifdef CONFIG_SMP
554 /* 558 /*
555 * Stop all of the others. Also disable the local irq to 559 * Stop all of the others. Also disable the local irq to
@@ -562,10 +566,6 @@ void native_machine_shutdown(void)
562 566
563 lapic_shutdown(); 567 lapic_shutdown();
564 568
565#ifdef CONFIG_X86_IO_APIC
566 disable_IO_APIC();
567#endif
568
569#ifdef CONFIG_HPET_TIMER 569#ifdef CONFIG_HPET_TIMER
570 hpet_disable(); 570 hpet_disable();
571#endif 571#endif