From nobody Sun Oct 25 16:51:05 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) client-ip=38.145.34.151; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=none dis=none) header.from=gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1792739618; cv=none; d=zohomail.com; s=zohoarc; b=eZpr9R9ic4RE4ELyZauc2I2UgI5I31HU6XeIpoYXc6w5Owzhx3XWUi2GmMzfphrB8MdZOkpgbPYozTRsvnC6k/1TlxjTxhdolZpet7DnWjf6b4AeWnL/1QUKdqat1W6L4biuqluKG39GmGd7V6KXOjav1k1WU9KtdZcTa8WmWM0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1792739618; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Subject:Subject:To:To:Message-Id:Reply-To; bh=NT9e5FI5J9IIyL+Jtb/s9cfV0kfQVQg/2ghdjeASQn8=; b=KZLuS6HbvPq6I04vBt9MY9i6T8oYlIl8L7mLL8WbvPimu2xyxoJXAgyroF9r7qnFCtMs5B0REdCnmgaJjI9sXtnIbRyAJA8cJDP8dAsLw+5/+HC/oL/5GJUN15I579D6msHHEEr2wF12j+BcTVXUzJSR9DdflFUGbiomfnrmIFA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of lists.libvirt.org designates 38.145.34.151 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [38.145.34.151]) by mx.zohomail.com with SMTPS id 1792739618678902.4589545942077; Fri, 23 Oct 2026 00:13:38 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id BA11D41A29; Fri, 23 Oct 2026 03:13:36 -0400 (EDT) Received: from [172.19.199.19] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id BD55F41BA1; Fri, 23 Oct 2026 03:12:32 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 3332D3F308; Fri, 23 Oct 2026 03:12:23 -0400 (EDT) Received: from mail-ej1-x62e.google.com (mail-ej1-x62e.google.com [IPv6:2a00:1450:4864:20::62e]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (3072 bits) server-digest SHA256) (No client certificate requested) by lists.libvirt.org (Postfix) with ESMTPS id 4E85D3F302 for ; Fri, 23 Oct 2026 03:12:22 -0400 (EDT) Received: by mail-ej1-x62e.google.com with SMTP id a640c23a62f3a-c4203bbb1e9so81422766b.3 for ; Fri, 23 Oct 2026 00:12:22 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-25f6-628e-6064-de9b.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:25f6:628e:6064:de9b]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c46a5ceaf0dsm68571166b.72.2026.10.23.00.12.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 23 Oct 2026 00:12:20 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-2.7 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1792739541; x=1793344341; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=NT9e5FI5J9IIyL+Jtb/s9cfV0kfQVQg/2ghdjeASQn8=; b=NsdfhChzM6dp6xkXXv1j+3SAL7ucGL+iv122noRUqnVPKVucC8hua7HIay78aX56NU 4aB6apI7pqfxY9/GsH260OCwq+LHB26ywCDSPZ6Yb6Zw0QcCUG+M/IRiOrhe5mypg7fF QZsymDhcDqXRSp+qCQ0u0WV/15HSK75fOGkpxph9gHVGz1c3iGvjdSDm57XU2jfqQbge D3FgMFnFcStw18Mv0DcmyaQSAF+TbRlwv2lmNbaLiRsfqD1EOh6I4wV7LoBI2N8KhHDA ayPE+4ClYq+j3ylvLbwVvrZEki6MPeUZny5OfPpIRjEm0ZR1VXWM3NOu/cFzyISjazUQ ao/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1792739541; x=1793344341; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=NT9e5FI5J9IIyL+Jtb/s9cfV0kfQVQg/2ghdjeASQn8=; b=jHGvGgnemOGgZWbhVuOI/VtoskMmgdgkNBWkcxHKYTamXf5BpAW7UXHHT6YyJj/+4E NqP6+LCgsHSwtB9eRnXVPEZ5/0sE1dMHNbDnUkRrK2M9TT9z063lzmTTK2LCjId1FwYQ /5MQMDUp3cV1OJY44x13HuypoiA2ccDn+y0BjcuR1H+QhT1JOPrbI/LqUHlLKjl+FPFW fA6Psf1rvAV9JDwjesaK4V3ZqzYFX0ArKcmDyHGHfGFfo7xRE+d3nLKSWvUprfp0k5y0 BmpPq9F5KdavizaUnuA2uoEtZCYz2CdGThubWkQXVwfcsA7/n48WN9ysk1OTOxG0gkFs SYfg== X-Gm-Message-State: AFq9FYLTgi9hSmO3oTnjBzQeKIkCwI+cQHKciFLhUJzmbg0uP0Aq761i ToJweSIAKemLXQ32CAlHzla1lu8vTIsHcSXABSMvAOsw9RjRLXJP7XUWic4yws5QPp0= X-Gm-Gg: AYBFou00SPj/WCxiLrpeUQAKWZsTyQ061VJJO5LLPWv2HXF46UcTGLASuxDYF+Wj2gu HIYPgQu7E99DhzGND4z8TFGmCi10V2XVIEuy6eY0QEQZG8srcCF2u7YpyLbHuF98AoGKL5lYlBf 5VijBJulcLTzcvG+aTNSqjVkgdxTIfKmCYFWk7ye0l2b2pcYy+wOQSvVrx2V+4TNS3OH1VncZYE sVv8oInJQkSK1q9pBZSoikpnRzI/KakMc8q6Vf+6glfZLSMJDL6RoWyAfwgYXrVBRfBXYdmf0o7 GmVJ8PedCII40h91+AyTS9eEBEk7FKcqYj7SJGdALgV+dp4Ex75CuX8LHFE1yk6uEvZkv47G3Ia pgweAMWILDt83E+dLlVSs5L9g8CzvaaJ9di9rdiUID8UdIe2EulVbt5OERDZ9tTljsyqLtBcCed nO2lqBQVL3EZVa5VWbZJacyKB4CU12rX8c1KzrgEu46tfbA5Aqkp1klXBLR/keIXmaSQmNpR4W9 EejLlM9+rDQxaZnDUHVBmNcem+E2+MHwzp4i+11/cW7/eURSWqRgE7ao/QDRhDT1N6hNGF7BtUu Z2wuUzT4FXIkHbsWQtGQ50HoSw3bnjiSszuFBF9gkHZQCMZ52c6VeOqrbe6yBJBQD9U= X-Received: by 2002:a17:907:9611:b0:c45:c030:732c with SMTP id a640c23a62f3a-c46a90a9e28mr220625866b.41.1792739540631; Fri, 23 Oct 2026 00:12:20 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH] bhyve: fix shutdown handling on arm64 Date: Fri, 23 Oct 2026 09:11:47 +0200 Message-ID: <20261023071147.16521-1-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: EBK7GJNVQ66VXGCUSB5L65BKCZGHTET6 X-Message-ID-Hash: EBK7GJNVQ66VXGCUSB5L65BKCZGHTET6 X-MailFrom: bogorodskiy@gmail.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.lists.libvirt.org-0; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Roman Bogorodskiy X-Mailman-Version: 3.3.10 Precedence: list List-Id: Development discussions about the libvirt library & tools Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-ZohoMail-DKIM: pass (identity @gmail.com) X-ZM-MESSAGEID: 1792739619543158500 Content-Type: text/plain; charset="utf-8" The bhyve driver requests signal-based shutdown by sending a SIGTERM signal to the bhyve process. On amd64 bhyve handles this signal to start ACPI shutdown. On arm64 bhyve does not implement ACPI shutdown, so it does not implement a signal handler for SIGTERM and just terminates. These cases are seen differently in the monitor, and the latter case is not handled, which could result in stopped domain reported as running. Fix by handling both cases. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_monitor.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/src/bhyve/bhyve_monitor.c b/src/bhyve/bhyve_monitor.c index dab07ff95f..8e481b17aa 100644 --- a/src/bhyve/bhyve_monitor.c +++ b/src/bhyve/bhyve_monitor.c @@ -20,6 +20,7 @@ =20 #include =20 +#include #include #include #include @@ -117,6 +118,7 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_UNU= SED, void *opaque) const char *name; struct kevent kev; int rc, status; + bool shutdownBySignal; =20 if (watch !=3D mon->watch || kq !=3D mon->kq) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -153,13 +155,19 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_U= NUSED, void *opaque) =20 name =3D vm->def->name; status =3D kev.data; + /* On amd64 SIGTERM triggers ACPI shutdown, and we see it as WIFEXITED= (status). + * However, arm64 has no SIGTERM handler, so we see it as WIFSIGNALED(= status). + */ + shutdownBySignal =3D WIFSIGNALED(status) && + WTERMSIG(status) =3D=3D SIGTERM; + if (WIFSIGNALED(status) && WCOREDUMP(status)) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Guest %1$s got signal %2$d and crashed"), name, WTERMSIG(status)); virBhyveProcessStop(driver, vm, VIR_DOMAIN_SHUTOFF_CRASHED, false); - } else if (WIFEXITED(status)) { - if (WEXITSTATUS(status) =3D=3D 0 || mon->reboot) { + } else if (WIFEXITED(status) || shutdownBySignal) { + if ((!shutdownBySignal && WEXITSTATUS(status) =3D=3D 0) || mon->re= boot) { /* 0 - reboot */ if (vm->def->onReboot =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_DESTR= OY || vm->def->onReboot =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_PRESE= RVE) { @@ -169,7 +177,7 @@ bhyveMonitorIO(int watch, int kq, int events G_GNUC_UNU= SED, void *opaque) VIR_INFO("Guest %s rebooted; restarting domain.", name); virBhyveProcessRestart(driver, vm); } - } else if (WEXITSTATUS(status) < 3) { + } else if (shutdownBySignal || WEXITSTATUS(status) < 3) { /* 1 - shutdown, 2 - halt, 3 - triple fault. others - error */ if (vm->def->onPoweroff =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_RES= TART || vm->def->onPoweroff =3D=3D VIR_DOMAIN_LIFECYCLE_ACTION_RES= TART_RENAME) { --=20 2.55.0