aboutsummaryrefslogtreecommitdiffstats
path: root/arch/i386/kernel/crash.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/i386/kernel/crash.c')
-rw-r--r--arch/i386/kernel/crash.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/i386/kernel/crash.c b/arch/i386/kernel/crash.c
index af809ccf5fbe..0248e084017c 100644
--- a/arch/i386/kernel/crash.c
+++ b/arch/i386/kernel/crash.c
@@ -21,6 +21,7 @@
21#include <asm/hardirq.h> 21#include <asm/hardirq.h>
22#include <asm/nmi.h> 22#include <asm/nmi.h>
23#include <asm/hw_irq.h> 23#include <asm/hw_irq.h>
24#include <asm/apic.h>
24#include <mach_ipi.h> 25#include <mach_ipi.h>
25 26
26 27
@@ -147,6 +148,7 @@ static int crash_nmi_callback(struct pt_regs *regs, int cpu)
147 regs = &fixed_regs; 148 regs = &fixed_regs;
148 } 149 }
149 crash_save_this_cpu(regs, cpu); 150 crash_save_this_cpu(regs, cpu);
151 disable_local_APIC();
150 atomic_dec(&waiting_for_crash_ipi); 152 atomic_dec(&waiting_for_crash_ipi);
151 /* Assume hlt works */ 153 /* Assume hlt works */
152 halt(); 154 halt();
@@ -186,6 +188,7 @@ static void nmi_shootdown_cpus(void)
186 } 188 }
187 189
188 /* Leave the nmi callback set */ 190 /* Leave the nmi callback set */
191 disable_local_APIC();
189} 192}
190#else 193#else
191static void nmi_shootdown_cpus(void) 194static void nmi_shootdown_cpus(void)
@@ -210,5 +213,9 @@ void machine_crash_shutdown(struct pt_regs *regs)
210 /* Make a note of crashing cpu. Will be used in NMI callback.*/ 213 /* Make a note of crashing cpu. Will be used in NMI callback.*/
211 crashing_cpu = smp_processor_id(); 214 crashing_cpu = smp_processor_id();
212 nmi_shootdown_cpus(); 215 nmi_shootdown_cpus();
216 lapic_shutdown();
217#if defined(CONFIG_X86_IO_APIC)
218 disable_IO_APIC();
219#endif
213 crash_save_self(regs); 220 crash_save_self(regs);
214} 221}