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.

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