mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 12:16:20 +00:00
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>
This commit is contained in:
parent
281e0e3b34
commit
4047727e5a
1 changed files with 2 additions and 0 deletions
|
@ -32,6 +32,7 @@
|
||||||
#include <linux/getcpu.h>
|
#include <linux/getcpu.h>
|
||||||
#include <linux/task_io_accounting_ops.h>
|
#include <linux/task_io_accounting_ops.h>
|
||||||
#include <linux/seccomp.h>
|
#include <linux/seccomp.h>
|
||||||
|
#include <linux/cpu.h>
|
||||||
|
|
||||||
#include <linux/compat.h>
|
#include <linux/compat.h>
|
||||||
#include <linux/syscalls.h>
|
#include <linux/syscalls.h>
|
||||||
|
@ -878,6 +879,7 @@ void kernel_power_off(void)
|
||||||
kernel_shutdown_prepare(SYSTEM_POWER_OFF);
|
kernel_shutdown_prepare(SYSTEM_POWER_OFF);
|
||||||
if (pm_power_off_prepare)
|
if (pm_power_off_prepare)
|
||||||
pm_power_off_prepare();
|
pm_power_off_prepare();
|
||||||
|
disable_nonboot_cpus();
|
||||||
sysdev_shutdown();
|
sysdev_shutdown();
|
||||||
printk(KERN_EMERG "Power down.\n");
|
printk(KERN_EMERG "Power down.\n");
|
||||||
machine_power_off();
|
machine_power_off();
|
||||||
|
|
Loading…
Reference in a new issue