All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH]xen/acpi: make poweroff really work for pv-ops dom0
@ 2009-11-24  1:33 Wei, Gang
  2009-11-24 19:32 ` Jeremy Fitzhardinge
  2009-11-24 23:13 ` Jeremy Fitzhardinge
  0 siblings, 2 replies; 6+ messages in thread
From: Wei, Gang @ 2009-11-24  1:33 UTC (permalink / raw)
  To: Jeremy Fitzhardinge; +Cc: Xen-devel

[-- Attachment #1: Type: text/plain, Size: 1127 bytes --]

xen/acpi: Make poweroff really work for pv-ops dom0

sched_op(SHUTDOWN_poweroff) hypercall will only halt all physical cpus without
really poweroff the system. Use pm_power_off fn to achieve it.

Signed-off-by: Wei Gang <gang.wei@intel.com>

diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index ecb9b0d..d9fd3f4 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1058,6 +1058,14 @@ static void xen_machine_halt(void)
 	xen_reboot(SHUTDOWN_poweroff);
 }
 
+static void xen_machine_power_off(void)
+{
+	if (pm_power_off) 
+		pm_power_off();
+	else
+		xen_reboot(SHUTDOWN_poweroff);
+}
+
 static void xen_crash_shutdown(struct pt_regs *regs)
 {
 	xen_reboot(SHUTDOWN_crash);
@@ -1066,7 +1074,7 @@ static void xen_crash_shutdown(struct pt_regs *regs)
 static const struct machine_ops __initdata xen_machine_ops = {
 	.restart = xen_restart,
 	.halt = xen_machine_halt,
-	.power_off = xen_machine_halt,
+	.power_off = xen_machine_power_off,
 	.shutdown = xen_machine_halt,
 	.crash_shutdown = xen_crash_shutdown,
 	.emergency_restart = xen_emergency_restart,

[-- Attachment #2: pvops-dom0-poweroff-fix.patch --]
[-- Type: application/octet-stream, Size: 1094 bytes --]

xen/acpi: Make poweroff really work for pv-ops dom0

sched_op(SHUTDOWN_poweroff) hypercall will only halt all physical cpus without
really poweroff the system. Use pm_power_off fn to achieve it.

Signed-off-by: Wei Gang <gang.wei@intel.com>

diff --git a/arch/x86/xen/enlighten.c b/arch/x86/xen/enlighten.c
index ecb9b0d..d9fd3f4 100644
--- a/arch/x86/xen/enlighten.c
+++ b/arch/x86/xen/enlighten.c
@@ -1058,6 +1058,14 @@ static void xen_machine_halt(void)
 	xen_reboot(SHUTDOWN_poweroff);
 }
 
+static void xen_machine_power_off(void)
+{
+	if (pm_power_off) 
+		pm_power_off();
+	else
+		xen_reboot(SHUTDOWN_poweroff);
+}
+
 static void xen_crash_shutdown(struct pt_regs *regs)
 {
 	xen_reboot(SHUTDOWN_crash);
@@ -1066,7 +1074,7 @@ static void xen_crash_shutdown(struct pt_regs *regs)
 static const struct machine_ops __initdata xen_machine_ops = {
 	.restart = xen_restart,
 	.halt = xen_machine_halt,
-	.power_off = xen_machine_halt,
+	.power_off = xen_machine_power_off,
 	.shutdown = xen_machine_halt,
 	.crash_shutdown = xen_crash_shutdown,
 	.emergency_restart = xen_emergency_restart,

[-- Attachment #3: Type: text/plain, Size: 138 bytes --]

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xensource.com
http://lists.xensource.com/xen-devel

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2009-11-25 19:26 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-11-24  1:33 [PATCH]xen/acpi: make poweroff really work for pv-ops dom0 Wei, Gang
2009-11-24 19:32 ` Jeremy Fitzhardinge
2009-11-25  2:38   ` Wei, Gang
2009-11-24 23:13 ` Jeremy Fitzhardinge
2009-11-25  6:57   ` Wei, Gang
2009-11-25 19:26     ` Jeremy Fitzhardinge

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.