diff options
Diffstat (limited to 'arch/arm/kernel/smp.c')
-rw-r--r-- | arch/arm/kernel/smp.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index 0170e248a1d..40dc74f2b27 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c | |||
@@ -471,10 +471,13 @@ static DEFINE_SPINLOCK(stop_lock); | |||
471 | */ | 471 | */ |
472 | static void ipi_cpu_stop(unsigned int cpu) | 472 | static void ipi_cpu_stop(unsigned int cpu) |
473 | { | 473 | { |
474 | spin_lock(&stop_lock); | 474 | if (system_state == SYSTEM_BOOTING || |
475 | printk(KERN_CRIT "CPU%u: stopping\n", cpu); | 475 | system_state == SYSTEM_RUNNING) { |
476 | dump_stack(); | 476 | spin_lock(&stop_lock); |
477 | spin_unlock(&stop_lock); | 477 | printk(KERN_CRIT "CPU%u: stopping\n", cpu); |
478 | dump_stack(); | ||
479 | spin_unlock(&stop_lock); | ||
480 | } | ||
478 | 481 | ||
479 | set_cpu_online(cpu, false); | 482 | set_cpu_online(cpu, false); |
480 | 483 | ||