From 37e7a6b7af9a95ffb5001042ca976243c0ad18fc Mon Sep 17 00:00:00 2001 From: "Eric W. Biederman" Date: Sun, 8 Jan 2006 01:03:46 -0800 Subject: [PATCH] --- yaml --- r: 16990 b: refs/heads/master c: 5e38291d80086f6972f471c7caffa03184de0bf0 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/alpha/kernel/process.c | 5 +++++ trunk/arch/m32r/kernel/process.c | 4 ++++ trunk/arch/um/kernel/reboot.c | 2 ++ trunk/kernel/sys.c | 6 ++++++ 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 7ca60f54a7dd..c6c618afba7d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 87ba81dba431232548ce29d5d224115d0c2355ac +refs/heads/master: 5e38291d80086f6972f471c7caffa03184de0bf0 diff --git a/trunk/arch/alpha/kernel/process.c b/trunk/arch/alpha/kernel/process.c index a8682612abc0..abb739b88ed1 100644 --- a/trunk/arch/alpha/kernel/process.c +++ b/trunk/arch/alpha/kernel/process.c @@ -43,6 +43,11 @@ #include "proto.h" #include "pci_impl.h" +/* + * Power off function, if any + */ +void (*pm_power_off)(void) = machine_power_off; + void cpu_idle(void) { diff --git a/trunk/arch/m32r/kernel/process.c b/trunk/arch/m32r/kernel/process.c index cc4b571e5db7..3bf55d92933f 100644 --- a/trunk/arch/m32r/kernel/process.c +++ b/trunk/arch/m32r/kernel/process.c @@ -50,6 +50,10 @@ unsigned long thread_saved_pc(struct task_struct *tsk) * Powermanagement idle function, if any.. */ void (*pm_idle)(void) = NULL; +EXPORT_SYMBOL(pm_idle); + +void (*pm_power_off)(void) = NULL; +EXPORT_SYMBOL(pm_power_off); void disable_hlt(void) { diff --git a/trunk/arch/um/kernel/reboot.c b/trunk/arch/um/kernel/reboot.c index a637e885c583..6f1a3a288117 100644 --- a/trunk/arch/um/kernel/reboot.c +++ b/trunk/arch/um/kernel/reboot.c @@ -12,6 +12,8 @@ #include "mode.h" #include "choose-mode.h" +void (*pm_power_off)(void); + #ifdef CONFIG_SMP static void kill_idlers(int me) { diff --git a/trunk/kernel/sys.c b/trunk/kernel/sys.c index eecf84526afe..d8e49e659027 100644 --- a/trunk/kernel/sys.c +++ b/trunk/kernel/sys.c @@ -489,6 +489,12 @@ asmlinkage long sys_reboot(int magic1, int magic2, unsigned int cmd, void __user magic2 != LINUX_REBOOT_MAGIC2C)) return -EINVAL; + /* Instead of trying to make the power_off code look like + * halt when pm_power_off is not set do it the easy way. + */ + if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off) + cmd = LINUX_REBOOT_CMD_HALT; + lock_kernel(); switch (cmd) { case LINUX_REBOOT_CMD_RESTART: