From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jeremy Fitzhardinge Subject: Re: [PATCH]xen/acpi: make poweroff really work for pv-ops dom0 Date: Tue, 24 Nov 2009 11:32:52 -0800 Message-ID: <4B0C34E4.9020108@goop.org> References: <8FED46E8A9CA574792FC7AACAC38FE7714FEC8776E@PDSMSX501.ccr.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <8FED46E8A9CA574792FC7AACAC38FE7714FEC8776E@PDSMSX501.ccr.corp.intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "Wei, Gang" Cc: Xen-devel List-Id: xen-devel@lists.xenproject.org On 11/23/09 17:33, Wei, Gang wrote: > 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. > It seems unfortunate that Xen can't actually implement SHUTDOWN_poweroff in a manner that the name suggests ;) But it can't because it may need to interpret _SST to do it... Thanks, J > Signed-off-by: Wei Gang > > 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,