diff options
-rw-r--r-- | arch/x86/kernel/smp_32.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/arch/x86/kernel/smp_32.c b/arch/x86/kernel/smp_32.c index cde3a0ecd716..8be3e091dcd0 100644 --- a/arch/x86/kernel/smp_32.c +++ b/arch/x86/kernel/smp_32.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/tlbflush.h> | 24 | #include <asm/tlbflush.h> |
25 | #include <asm/mmu_context.h> | 25 | #include <asm/mmu_context.h> |
26 | #include <mach_apic.h> | 26 | #include <mach_apic.h> |
27 | #include <asm/proto.h> | ||
27 | 28 | ||
28 | /* | 29 | /* |
29 | * Some notes on x86 processor bugs affecting SMP operation: | 30 | * Some notes on x86 processor bugs affecting SMP operation: |
@@ -622,10 +623,14 @@ static void stop_this_cpu (void * dummy) | |||
622 | 623 | ||
623 | static void native_smp_send_stop(void) | 624 | static void native_smp_send_stop(void) |
624 | { | 625 | { |
625 | /* Don't deadlock on the call lock in panic */ | 626 | int nolock; |
626 | int nolock = !spin_trylock(&call_lock); | ||
627 | unsigned long flags; | 627 | unsigned long flags; |
628 | 628 | ||
629 | if (reboot_force) | ||
630 | return; | ||
631 | |||
632 | /* Don't deadlock on the call lock in panic */ | ||
633 | nolock = !spin_trylock(&call_lock); | ||
629 | local_irq_save(flags); | 634 | local_irq_save(flags); |
630 | __smp_call_function(stop_this_cpu, NULL, 0, 0); | 635 | __smp_call_function(stop_this_cpu, NULL, 0, 0); |
631 | if (!nolock) | 636 | if (!nolock) |