Commit 4047727e5ae33f9b8d2b7766d1994ea6e5ec2991
Committed by
Linus Torvalds
1 parent
281e0e3b34
Exists in
master
and in
7 other branches
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
kernel/sys.c
... | ... | @@ -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(); |