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
> 
> 

Reply via email to