summaryrefslogtreecommitdiffstats
path: root/arch/ppc
diff options
context:
space:
mode:
authorCorey Minyard <minyard@acm.org>2006-09-06 16:02:53 +0200
committerPaul Mackerras <paulus@samba.org>2006-09-13 10:39:52 +0200
commit477bcae4c289a60f2303fbd4a3a875dcca647cf8 (patch)
treec9c7136011ad809d433e94c9bc482f7526c53627 /arch/ppc
parent[POWERPC] Emulate power5 popcntb instruction (diff)
downloadlinux-477bcae4c289a60f2303fbd4a3a875dcca647cf8.tar.xz
linux-477bcae4c289a60f2303fbd4a3a875dcca647cf8.zip
[POWERPC] Make function of pm_power_off consistent with x86
Allow the pm_power_off function variable in PPC to work as an override. This makes the function consistent with the other architectures and it allows generic poweroff operations (like those provided in IPMI systems) to work properly on PPC. Signed-off-by: Corey Minyard <minyard@acm.org> Cc: Joseph Barnett <jbarnett@motorola.com> Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/ppc')
-rw-r--r--arch/ppc/kernel/setup.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c
index a74f46d9826f..5458ac5da7c3 100644
--- a/arch/ppc/kernel/setup.c
+++ b/arch/ppc/kernel/setup.c
@@ -127,11 +127,8 @@ void machine_restart(char *cmd)
ppc_md.restart(cmd);
}
-void machine_power_off(void)
+static void ppc_generic_power_off(void)
{
-#ifdef CONFIG_NVRAM
- nvram_sync();
-#endif
ppc_md.power_off();
}
@@ -143,7 +140,17 @@ void machine_halt(void)
ppc_md.halt();
}
-void (*pm_power_off)(void) = machine_power_off;
+void (*pm_power_off)(void) = ppc_generic_power_off;
+
+void machine_power_off(void)
+{
+#ifdef CONFIG_NVRAM
+ nvram_sync();
+#endif
+ if (pm_power_off)
+ pm_power_off();
+ ppc_generic_power_off();
+}
#ifdef CONFIG_TAU
extern u32 cpu_temp(unsigned long cpu);