diff options
Diffstat (limited to 'arch/i386/kernel/crash.c')
-rw-r--r-- | arch/i386/kernel/crash.c | 7 |
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 |
191 | static void nmi_shootdown_cpus(void) | 194 | static 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 | } |