Subject: [RFC] poweroff via pm_power_off if set

From: Christian Krafft <[email-masked]>
Date: Fri, 13 Jun 2008 17:36:49 +0200

This patch is needed to make ipmi_poweroff working on powerpc.
It straightens the poweroff procedure to match with other architectures.
At the moment powerpc plattforms can define their poweroff method using
ppc_md.power_off. The only way for plattform independent driver (ipmi_poweroff)
to register it's poweroff function is to use pm_power_off. So machine_power_off
should check whether pm_power_off has been set and if so it should be used.
If not, plattform dependent ppc_md.power_off should be called.

Signed-off-by: Christian Krafft <[email-masked]>

Index: linux.git/arch/powerpc/kernel/setup-common.c
===================================================================
--- linux.git.orig/arch/powerpc/kernel/setup-common.c
+++ linux.git/arch/powerpc/kernel/setup-common.c
@@ -121,6 +121,8 @@ void machine_restart(char *cmd)
 void machine_power_off(void)
 {
 	machine_shutdown();
+	if (pm_power_off)
+		pm_power_off();
 	if (ppc_md.power_off)
 		ppc_md.power_off();
 #ifdef CONFIG_SMP
@@ -133,7 +135,7 @@ void machine_power_off(void)
 /* Used by the G5 thermal driver */
 EXPORT_SYMBOL_GPL(machine_power_off);
 
-void (*pm_power_off)(void) = machine_power_off;
+void (*pm_power_off)(void) = NULL;
 EXPORT_SYMBOL_GPL(pm_power_off);
 
 void machine_halt(void)

-- 
Mit freundlichen Gruessen,
kind regards,

Christian Krafft
IBM Systems & Technology Group,
Linux Kernel Development
IT Specialist

Vorsitzender des Aufsichtsrats:	Martin Jetter
Geschaeftsfuehrung:		Herbert Kircher
Sitz der Gesellschaft:		Boeblingen
Registriergericht:		Amtsgericht Stuttgart, HRB 243294