Commit 4047727e5ae33f9b8d2b7766d1994ea6e5ec2991

Authored by Mark Lord
Committed by Linus Torvalds
1 parent 281e0e3b34

Fix SMP poweroff hangs

We need to disable all CPUs other than the boot CPU (usually 0) before
attempting to power-off modern SMP machines.  This fixes the
hang-on-poweroff issue on my MythTV SMP box, and also on Thomas Gleixner's
new toybox.

Signed-off-by: Mark Lord <mlord@pobox.com>
Acked-by: Thomas Gleixner <tglx@linutronix.de>
Cc: "Rafael J. Wysocki" <rjw@sisk.pl>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

Showing 1 changed file with 2 additions and 0 deletions Side-by-side Diff

... ... @@ -32,6 +32,7 @@
32 32 #include <linux/getcpu.h>
33 33 #include <linux/task_io_accounting_ops.h>
34 34 #include <linux/seccomp.h>
  35 +#include <linux/cpu.h>
35 36  
36 37 #include <linux/compat.h>
37 38 #include <linux/syscalls.h>
... ... @@ -878,6 +879,7 @@
878 879 kernel_shutdown_prepare(SYSTEM_POWER_OFF);
879 880 if (pm_power_off_prepare)
880 881 pm_power_off_prepare();
  882 + disable_nonboot_cpus();
881 883 sysdev_shutdown();
882 884 printk(KERN_EMERG "Power down.\n");
883 885 machine_power_off();