On 13/11/2015 14:22, Corey Minyard wrote: > On 11/13/2015 03:15 AM, Daniel P. Berrange wrote: >> On Thu, Nov 12, 2015 at 01:02:33PM -0600, miny...@acm.org wrote: >>> From: Corey Minyard <cminy...@mvista.com> >>> >>> Allow the IPMI interface to request a forced power off. >>> >>> Signed-off-by: Corey Minyard <cminy...@mvista.com> >>> --- >>> hw/ipmi/ipmi_bmc_extern.c | 5 +++++ >>> 1 file changed, 5 insertions(+) >>> >>> diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c >>> index 05b9121..7ae6294 100644 >>> --- a/hw/ipmi/ipmi_bmc_extern.c >>> +++ b/hw/ipmi/ipmi_bmc_extern.c >>> @@ -52,6 +52,7 @@ >>> #define VM_CAPABILITIES_IRQ 0x04 >>> #define VM_CAPABILITIES_NMI 0x08 >>> #define VM_CAPABILITIES_ATTN 0x10 >>> +#define VM_CMD_FORCEOFF 0x09 >>> >>> #define TYPE_IPMI_BMC_EXTERN "ipmi-bmc-extern" >>> #define IPMI_BMC_EXTERN(obj) OBJECT_CHECK(IPMIBmcExtern, (obj), \ >>> @@ -268,6 +269,10 @@ static void handle_hw_op(IPMIBmcExtern *ibe, unsigned >>> char hw_op) >>> case VM_CMD_SEND_NMI: >>> k->do_hw_op(s, IPMI_SEND_NMI, 0); >>> break; >>> + >>> + case VM_CMD_FORCEOFF: >>> + exit(0); >>> + break; >> You should really be calling qemu_system_shutdown_request() rather than >> exit() so that you run normal QEMU shutdown logic. > > qemu_system_shutdown_request() would generally have already been called using > VM_CMD_POWEROFF. If I understand correctly, qemu_system_shutdown_request() > does > a graceful shutdown and may not complete if the OS has failed.
No, that's qemu_system_powerdown_request. Paolo > The CMD_FORCEOFF is a "power off and don't ask me any questions" operation. > It's > used as a last resort if VM_CMD_POWEROFF fails. > > -corey > >