From patchwork Mon Sep 12 20:57:29 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 76029 Delivered-To: patch@linaro.org Received: by 10.140.106.72 with SMTP id d66csp1042922qgf; Mon, 12 Sep 2016 14:04:54 -0700 (PDT) X-Received: by 10.200.40.91 with SMTP id 27mr8499082qtr.46.1473714294104; Mon, 12 Sep 2016 14:04:54 -0700 (PDT) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [208.118.235.17]) by mx.google.com with ESMTPS id q16si2977570qta.8.2016.09.12.14.04.54 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 12 Sep 2016 14:04:54 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; Authentication-Results: mx.google.com; dkim=fail header.i=@gmail.com; spf=pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org Received: from localhost ([::1]:45192 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bjYPN-0003Pa-P0 for patch@linaro.org; Mon, 12 Sep 2016 17:04:53 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:51594) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bjYO3-0002wa-P7 for qemu-devel@nongnu.org; Mon, 12 Sep 2016 17:03:32 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bjYNx-00072Y-Ok for qemu-devel@nongnu.org; Mon, 12 Sep 2016 17:03:30 -0400 Received: from mail-pf0-f193.google.com ([209.85.192.193]:35440) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bjYNx-0006yH-JS for qemu-devel@nongnu.org; Mon, 12 Sep 2016 17:03:25 -0400 Received: by mail-pf0-f193.google.com with SMTP id z84so245553pfi.2 for ; Mon, 12 Sep 2016 14:03:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:subject:date:message-id:in-reply-to:references; bh=yMrgMTBluCCBmNKOOef7IFGsS99cWBfYhJjl64uI8lY=; b=JcWFcDPym78V/ZIUTn3v/+z/hPkJr9MfD3Zlq+O5l0znUwaX/HW4P4KrZRf9ZoUYSX b8DEeooCv6LvkqmBcAS7XinnzUXbUHj3mzeyhwFNJ1LTPXvNTsgbhYvGXpeKFjMx3cHj Th9T1zxRsq2HBFFDx1cTjFgQwmM60uFX/l7d3zk026oyDCG+70Fe2SD5uYkJTbw18jl5 w+ouN7XYz1z1rqiPloFz0o0Ui1Bjn8ZL92+aoygIOaN2YaIYt5Q2YBqnF1b4OK56bHcM zhmC/+UzPufAsJwNP2PzMgP1CZVKmYgquw9WcD832Xrhd58hpS3AQM/cMGJyyRVFpdFG EDSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references; bh=yMrgMTBluCCBmNKOOef7IFGsS99cWBfYhJjl64uI8lY=; b=mZksyWg8ZVTQq5EUQ8JO7T87Ru5VHbiLXS0CwzmqsRY+RUaBNjwvtos/qb/ezbEuCh UJOoA0jj6aRtgC6tQ4+Wx7eTM+ii6qfHcQ1t0vH6OoQpBhO+jmaAEIu7uyN66UsxezxL Mc+qFwevvCooFlN9Ra0ETc1Du4A02BOs7PqM/NzjiGirG1cVjZny85wFZUcviYhtdO+W E7YPSTWsV8sKlwTosqOp2qG9ArzV65OSID+w4ZbSn9QQUtibgqw/9R3jwYy52z/BW6td Lvt5po0U+6+aSjOGz48Sj4qvgJOXDwk/sPQ6Fs/4PfWoJMDOlY8OtxPF1ywGMsOmDhHL hnZg== X-Gm-Message-State: AE9vXwMXswfb2kN3EdTATNOZIiyq5eQu/bKJBcoezeFGqjwe+TILk8vOJhMPGcwmvfQKZA== X-Received: by 10.98.34.156 with SMTP id p28mr37563122pfj.102.1473714123701; Mon, 12 Sep 2016 14:02:03 -0700 (PDT) Received: from serve.minyard.net (serve.minyard.net. [2001:470:b8f6:1b::1]) by smtp.gmail.com with ESMTPSA id wp4sm26587435pab.15.2016.09.12.14.02.02 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Sep 2016 14:02:02 -0700 (PDT) Received: from t430.minyard.net (unknown [IPv6:2001:470:b8f6:1b:3dbe:8827:73b3:2df2]) by serve.minyard.net (Postfix) with ESMTPA id 606E7305; Mon, 12 Sep 2016 16:02:01 -0500 (CDT) Received: by t430.minyard.net (Postfix, from userid 1000) id 93160300071; Mon, 12 Sep 2016 16:02:00 -0500 (CDT) From: minyard@acm.org To: qemu-devel@nongnu.org, cminyard@mvista.com Date: Mon, 12 Sep 2016 15:57:29 -0500 Message-Id: <1473713849-733-1-git-send-email-minyard@acm.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1473364353-23775-1-git-send-email-minyard@acm.org> References: <1473364353-23775-1-git-send-email-minyard@acm.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.192.193 Subject: [Qemu-devel] [PATCH] ipmi: Add graceful shutdown handling to the external BMC X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+patch=linaro.org@nongnu.org Sender: "Qemu-devel" From: Corey Minyard I misunderstood the workings of the power settings, the power off is a force off operation and there needs to be a separate graceful shutdown operation. So replace the force off operation with a graceful shutdown. Signed-off-by: Corey Minyard --- hw/ipmi/ipmi_bmc_extern.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) This is the final patch to implement proper shutdown for the external interface. OpenIPMI is changed to match this. -- 2.7.4 diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c index 032720a..a141f0a 100644 --- a/hw/ipmi/ipmi_bmc_extern.c +++ b/hw/ipmi/ipmi_bmc_extern.c @@ -54,7 +54,8 @@ #define VM_CAPABILITIES_IRQ 0x04 #define VM_CAPABILITIES_NMI 0x08 #define VM_CAPABILITIES_ATTN 0x10 -#define VM_CMD_FORCEOFF 0x09 +#define VM_CAPABILITIES_GRACEFUL_SHUTDOWN 0x20 +#define VM_CMD_GRACEFUL_SHUTDOWN 0x09 #define TYPE_IPMI_BMC_EXTERN "ipmi-bmc-extern" #define IPMI_BMC_EXTERN(obj) OBJECT_CHECK(IPMIBmcExtern, (obj), \ @@ -272,8 +273,8 @@ static void handle_hw_op(IPMIBmcExtern *ibe, unsigned char hw_op) k->do_hw_op(s, IPMI_SEND_NMI, 0); break; - case VM_CMD_FORCEOFF: - qemu_system_shutdown_request(); + case VM_CMD_GRACEFUL_SHUTDOWN: + k->do_hw_op(s, IPMI_SHUTDOWN_VIA_ACPI_OVERTEMP, 0); break; } } @@ -397,6 +398,10 @@ static void chr_event(void *opaque, int event) if (k->do_hw_op(ibe->parent.intf, IPMI_POWEROFF_CHASSIS, 1) == 0) { v |= VM_CAPABILITIES_POWER; } + if (k->do_hw_op(ibe->parent.intf, IPMI_SHUTDOWN_VIA_ACPI_OVERTEMP, 1) + == 0) { + v |= VM_CAPABILITIES_GRACEFUL_SHUTDOWN; + } if (k->do_hw_op(ibe->parent.intf, IPMI_RESET_CHASSIS, 1) == 0) { v |= VM_CAPABILITIES_RESET; }