From patchwork Mon Oct 24 20:10:20 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Corey Minyard X-Patchwork-Id: 79073 Delivered-To: patch@linaro.org Received: by 10.140.97.247 with SMTP id m110csp2770454qge; Mon, 24 Oct 2016 13:24:33 -0700 (PDT) X-Received: by 10.176.0.19 with SMTP id 19mr10662155uai.47.1477340673100; Mon, 24 Oct 2016 13:24:33 -0700 (PDT) Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id g69si2415066vkf.131.2016.10.24.13.24.32 for (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 24 Oct 2016 13:24:33 -0700 (PDT) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; 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 2001:4830:134:3::11 as permitted sender) smtp.mailfrom=qemu-devel-bounces+patch=linaro.org@nongnu.org Received: from localhost ([::1]:49797 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bylnL-0000bZ-VJ for patch@linaro.org; Mon, 24 Oct 2016 16:24:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:42305) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bylZt-0005SJ-Ds for qemu-devel@nongnu.org; Mon, 24 Oct 2016 16:10:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bylZs-0001kQ-Hk for qemu-devel@nongnu.org; Mon, 24 Oct 2016 16:10:37 -0400 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:34779) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1bylZs-0001jW-8z for qemu-devel@nongnu.org; Mon, 24 Oct 2016 16:10:36 -0400 Received: by mail-pf0-x244.google.com with SMTP id 128so17395662pfz.1 for ; Mon, 24 Oct 2016 13:10:36 -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=AV+44Bo1PO44pRWIZGhqGvoFRCacjufyfVJhfXUAhjU=; b=v3o2wLpIwKvedongpE8OxtfNwjaeTU2TYE9M8Z++uweI+tRs6DoqZ46uRFDxAoQWQ5 hSVLiNDsNNR2+kRvbdEYWjZJDfh+LYi6AdwduqEI3YbRYMTgkhzwSqOMJOEOsnSLRIyR /sLPfyJ5SLwr7QWb///MUWX30Y7iT5pX+ak28JUsMfXhZXyvy1YlI5XtjCfqhdFKwKXE yWEA81WW/I+OnzaG+2J8WNfdhLqnJigaz6+N3o8Xx4L2Jf2MVYIxsoxvHwDmjj4IyRxd M+5uc7VBZredLLxYp9p8Rb/P7jay0qJOkvZ2s2cvBYssT3cNzfNwnyRynT4pN5kfwXGm 3C3g== 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=AV+44Bo1PO44pRWIZGhqGvoFRCacjufyfVJhfXUAhjU=; b=PeZnLYm7N3ir4MT7TWEVCYedBUnF2c/1tPEhnvI3prRTPxydblhXSr4LZihPXc0fUH ND2VzaJmDCZM2XDpHCL5h++FbBhqKkJeAeI69HQ42ePAFASEHnekGiX2areLENKVV2b0 aSu9mIzjn7g3r/kgNGRzg9Dl+2FbV4or1aB13cqIdRj1FPoCfG4gGl7EJj77Ac25NQeR LfoHWJEiD74HqvGw5Q0d0dfg6Kn/+EGIXyuFvOcS1rctKb7JS/pPIVjsBw9q0gHAbis3 sQFurBr5yMlz7tGchWc0welaxaW11tGGhG+6MM7FZUN77+LhqLa24pv/NWD37z/iUsgM 1Xkw== X-Gm-Message-State: ABUngvdVzfq+GXjyUHF1Mu1ZQ4Bjc+49KzI+hHjwdx1e/3vMOBg9uXcG0b+0vRsSXv74GQ== X-Received: by 10.98.198.132 with SMTP id x4mr32218996pfk.23.1477339834729; Mon, 24 Oct 2016 13:10:34 -0700 (PDT) Received: from serve.minyard.net ([47.184.183.230]) by smtp.gmail.com with ESMTPSA id bu8sm3421286pab.46.2016.10.24.13.10.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 24 Oct 2016 13:10:32 -0700 (PDT) Received: from t430.minyard.net (unknown [IPv6:2001:470:b8f6:1b:8dac:40d6:dae9:c9fb]) by serve.minyard.net (Postfix) with ESMTPA id 8A6061426; Mon, 24 Oct 2016 15:10:28 -0500 (CDT) Received: by t430.minyard.net (Postfix, from userid 1000) id 7D5F23025DE; Mon, 24 Oct 2016 15:10:25 -0500 (CDT) From: minyard@acm.org To: Igor Mammedov , "Michael S . Tsirkin" , Paolo Bonzini , qemu-devel@nongnu.org, minyard@acm.org, cminyard@mvista.com Date: Mon, 24 Oct 2016 15:10:20 -0500 Message-Id: <1477339821-11782-7-git-send-email-minyard@acm.org> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1477339821-11782-1-git-send-email-minyard@acm.org> References: <1477339821-11782-1-git-send-email-minyard@acm.org> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:400e:c00::244 Subject: [Qemu-devel] [PATCH 6/7] 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 ++++++++--- tests/ipmi-bt-test.c | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) -- 2.7.4 diff --git a/hw/ipmi/ipmi_bmc_extern.c b/hw/ipmi/ipmi_bmc_extern.c index d30b286..e8e3d25 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), \ @@ -276,8 +277,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; } } @@ -401,6 +402,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; } diff --git a/tests/ipmi-bt-test.c b/tests/ipmi-bt-test.c index be9005e..65d05b3 100644 --- a/tests/ipmi-bt-test.c +++ b/tests/ipmi-bt-test.c @@ -309,7 +309,7 @@ static void test_connect(void) uint8_t msg[100]; unsigned int msglen; static uint8_t exp1[] = { 0xff, 0x01, 0xa1 }; /* A protocol version */ - static uint8_t exp2[] = { 0x08, 0x1f, 0xa1 }; /* A capabilities cmd */ + static uint8_t exp2[] = { 0x08, 0x3f, 0xa1 }; /* A capabilities cmd */ FD_ZERO(&readfds); FD_SET(emu_lfd, &readfds);