From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:43252) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZxEJW-0000Qg-5Q for qemu-devel@nongnu.org; Fri, 13 Nov 2015 08:22:51 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZxEJT-0002kO-G7 for qemu-devel@nongnu.org; Fri, 13 Nov 2015 08:22:50 -0500 Received: from mail-ob0-x236.google.com ([2607:f8b0:4003:c01::236]:35958) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZxEJT-0002kJ-9H for qemu-devel@nongnu.org; Fri, 13 Nov 2015 08:22:47 -0500 Received: by obdgf3 with SMTP id gf3so73467815obd.3 for ; Fri, 13 Nov 2015 05:22:46 -0800 (PST) Message-ID: <5645E423.4090805@mvista.com> Date: Fri, 13 Nov 2015 07:22:43 -0600 From: Corey Minyard MIME-Version: 1.0 References: <1447354953-18893-1-git-send-email-minyard@acm.org> <1447354953-18893-18-git-send-email-minyard@acm.org> <20151113091508.GA29459@redhat.com> In-Reply-To: <20151113091508.GA29459@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v4 17/17] ipmi: Add a force off function List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Daniel P. Berrange" , minyard@acm.org Cc: Paolo Bonzini , Igor Mammedov , qemu-devel@nongnu.org, "Michael S. Tsirkin" On 11/13/2015 03:15 AM, Daniel P. Berrange wrote: > On Thu, Nov 12, 2015 at 01:02:33PM -0600, minyard@acm.org wrote: >> From: Corey Minyard >> >> Allow the IPMI interface to request a forced power off. >> >> Signed-off-by: Corey Minyard >> --- >> 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