From nobody Tue Aug 25 02:49:52 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=1787244005; cv=none; d=zohomail.com; s=zohoarc; b=LoYbpGCcPcWmcI0+UFUn/myQ0kAbRlzsq13pTz1rfk02+w1XqTYktbyx8nAzAE1gpwBFUK3jwQR3ne1IN3TBF05iVqlQRmmRC78EKvcnWKGOCrfIpORGeNBk3yffvdDyzi/Sk+Jvm66uST/8JjGImgi73aOQzaX62ok7ZdiG/yg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244005; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=EkJ9FtsUS8l4cVCxOxaMVWSM0+I4WVz6AgP//slbiBc=; b=IVuzHZlbn2I9fRk83Wt4hZSbDOnQWxGAdt2wwAxu15KDrBRk2aPrJXeMTMs6yX/UToXkNJK62xIdMK7GxjTjuy5Ex5DcgTVzr/8mmaskjdtYi7Z6cyaxLT6jKLd7t/ESf7omoDcakDSVCw18mXWHIL5uA7NYsorVkoUIfypcmjg= 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 1787244005475665.3385559125792; Thu, 20 Aug 2026 09:40:05 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id E02FA41931; Thu, 20 Aug 2026 12:40:03 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 8DA1F41983 for ; Thu, 20 Aug 2026 12:39:05 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 4EE5B3FA5C; Thu, 20 Aug 2026 12:38:53 -0400 (EDT) Received: from mail-ed1-x530.google.com (mail-ed1-x530.google.com [IPv6:2a00:1450:4864:20::530]) (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 8A3A53FA5C for ; Thu, 20 Aug 2026 12:38:52 -0400 (EDT) Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-6a3efa2b38aso175225a12.2 for ; Thu, 20 Aug 2026 09:38:52 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2458b58a50sm101557066b.26.2026.08.20.09.38.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:38:50 -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=1787243931; x=1787848731; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=EkJ9FtsUS8l4cVCxOxaMVWSM0+I4WVz6AgP//slbiBc=; b=A0i/3TWTPRSKtXADiEyKBgs+bWjF6I8eOo7BcCwjCBf0wRsEYAqdpA9XuyhO5WPpnP xcx2HF1fC3zzom8w5yIUD31NbjvH9mmAsopWGVBLdfC5Ln+a+4Hz1zIiYZGOgmZIKlus 7PsaZzEc2JrxMqbaC0l7N2jsAz8gp/3ZdgL8RWBowBBTqrkutzV+k7W9CLFloXO/0/+W GwTemTj87jZWEmou0mw9ULZUOhEkvpOOC7vryTCG0unKNxoZXGVDcSdNMzz7uavQ3jVj 36p6eJ2BnjPxEXjpyEIT2et47OUnuRKqqfO7UkOCTMR3egjH8YqZnC1KnemNum756N0B TPjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787243931; x=1787848731; h=content-transfer-encoding:mime-version:references:in-reply-to :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=EkJ9FtsUS8l4cVCxOxaMVWSM0+I4WVz6AgP//slbiBc=; b=PFd445xkdT2o0jXOm3KWc0+PyYxR8yseMQvcwWpZorSOKv0iOgmn3YjsUYYd3n9QVC r4nyugx8LR012AD6HZNPn99T9VpdvDmYARxuDHST7z2P0vZS5xnTA57vg3lSOBIcNz67 y4RW2/6EdinmDcHKXb/pPBBcrloDuTQUk1triLOxNoc3uOb5zxQVXhtPDWW47XANk1Hh uOuoymr2eTemJfIuuJEokjOhdiIslgaUZ5dgzrVYv0kTnJtD7MB+iZDB6IcU+InvBWes UJj9avbUlwW927BlJ/JCxfRRt0uHfA8LJOOqM9qxWu6IT8J5lGo1Nwv7sE4ZXzOg2bdj TwOQ== X-Gm-Message-State: AOJu0YwDe03y73CTzzeKLMaQhBZE5A2M2r1DkMleXmdOk/2EUhvAF0u8 uzyheYDckRHkjZ+gOXMRPCaJKgvyCj9wdy3hotDfzV9JZ14dfbou9Q3/asBIKOdK X-Gm-Gg: AR+sD12I81NFE9f5z5BLzdw+Npq4SsZJC65NCygnOX6gucXH/4ztggFrOs1kfNH/VBP y3oxNs1+8mmjTqKcmaXPC5q0CmUMDiFKFICXld85WXZy8g0DLAfdcoZRwQa2k0JXrTqXnx8twOO 9rMWCbBYER3+QdSn9om74oJ63hXwHWPPcq6iQvZizNJi0bIoJDS8YmZEn9VD+7nlHXLuKT+5TqT BOdYbB2yo2xrz/FfYyWjRpldhktiroaLpJf2ykJAkB3tcVrXA4Nvt8ghn7vJe1ogxy/YFDDueUl 38pYlhx5Y9xdepHEgK+qC95UaDLVHikFQ4CN5liB3b5Cc3fVsA0ngtR/gCyzRU1aGffVQV3HVHv EnVAKixqOprhziIBDCuNBMoqedN56Wk5342k/GZWWQODGJH7phCS0CtacHFItGZ0jWM1Fhddw+T 0jBSk0njBUgcYpt5bofJtgeapn3PTQqdib3gaIHVDfHItH31h6NHvzGoTNf9BndiRGAUhSSRWg+ Sp8PS60Xo8WZ+4mo0kcHSx9XC9QnZeQIb2BBsIN66Vkx7RVrxrwbX9PgAuPbDoU3Dtjh2+OC/w= X-Received: by 2002:a17:907:c08c:b0:c21:96e8:578d with SMTP id a640c23a62f3a-c242e22d1e9mr1186184766b.15.1787243931107; Thu, 20 Aug 2026 09:38:51 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 1/4] bhyve: process: do not leak live changes to persistent XML Date: Thu, 20 Aug 2026 18:38:07 +0200 Message-ID: <20260820163810.81380-2-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260820163810.81380-1-bogorodskiy@gmail.com> References: <20260820163810.81380-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: G3NWFXTSX3AA73X2QSNRTAJ3L3O573XH X-Message-ID-Hash: G3NWFXTSX3AA73X2QSNRTAJ3L3O573XH 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: 1787244006487158500 Content-Type: text/plain; charset="utf-8" Update virBhyveProcessStart() to call virDomainObjSetDefTransient() so we save the persistent configuration in vm->newDef, and use vm->def as a live definition. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_process.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index 65e3bdfd02..9578b8003c 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -591,6 +591,9 @@ virBhyveProcessStart(bhyveConn *driver, virDomainRunningReason reason, unsigned int flags) { + if (virDomainObjSetDefTransient(driver->xmlopt, vm, NULL) < 0) + return -1; + /* Run an early hook to setup missing devices. */ if (bhyveProcessStartHook(driver, vm, VIR_HOOK_BHYVE_OP_PREPARE) < 0) goto cleanup; @@ -609,6 +612,7 @@ virBhyveProcessStart(bhyveConn *driver, cleanup: bhyveProcessStopHook(driver, vm, VIR_HOOK_BHYVE_OP_STOPPED); bhyveProcessStopHook(driver, vm, VIR_HOOK_BHYVE_OP_RELEASE); + virDomainObjRemoveTransientDef(vm); =20 return -1; } --=20 2.52.0 From nobody Tue Aug 25 02:49:52 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=1787244183; cv=none; d=zohomail.com; s=zohoarc; b=ak/onKEmEnarNBA3Am6H8XzXhHaaWypn6/IlWM5ECU4IKlRiWkerDe82UT8CbmoOl/bLFAx3Ub1BEUdTZ1Jp3wpjnSW0Edrse5qVmffxBxUo/nFRgIVcU/RBNe7eIVOWbKoYeBL44w3vwqhQ+M941HLG7sHJzaM1mF6aC8uo0DQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244183; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=CPlnl0c+av+7GGCcZbUoectiWvhIiUxuEWP60z55SlU=; b=OrNWHdYQ34PrmorwPJ5GNKSCNuKaf8m2hmpAclYyNE7UsGkWJlI4wTM5CErR6UjK9XgrccYVU/zJ/yi3/TJcXIbEoyvxU1Fi2NZQO4BFKXLBS6Mk9Q6fpUi/q25IpvbLvQ+gnpMnlO8jufxrStVvaDDj6S7ooeJZsDx9gWARWLU= 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 1787244183526529.3558308930394; Thu, 20 Aug 2026 09:43:03 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 55E0041BE0; Thu, 20 Aug 2026 12:43:02 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 4137D41C53 for ; Thu, 20 Aug 2026 12:39:25 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7A8B53F866; Thu, 20 Aug 2026 12:38:54 -0400 (EDT) Received: from mail-ed1-x536.google.com (mail-ed1-x536.google.com [IPv6:2a00:1450:4864:20::536]) (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 12020418B5 for ; Thu, 20 Aug 2026 12:38:53 -0400 (EDT) Received: by mail-ed1-x536.google.com with SMTP id 4fb4d7f45d1cf-6a17211b9ecso288841a12.2 for ; Thu, 20 Aug 2026 09:38:53 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2458b58a50sm101557066b.26.2026.08.20.09.38.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:38:51 -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=1787243932; x=1787848732; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=CPlnl0c+av+7GGCcZbUoectiWvhIiUxuEWP60z55SlU=; b=o6HHgchHJVKW+riGaE2CaLQCPoarJRgEcFRiM8pbDyJSNtz1nl/UVJnZtFLtCTtBT6 R7Uy4WWIikuSFfPa6o2MRnh/X4nz2liO3+fydns4hvG0Z4QyKxCrjxGjuey06N6R5hEO JmL3iWLbGlgPEn6RNL6sPGXl7T/xFzSZQYxIyl8oBQgJsugt5/wbQh5WORpP/SyiBqEf 3lwFKNDr6u1bGvMf45It+6lnzlKH9pwslOYmoP9puxFMem/0yskDkM0ol9HUhCT/3xuC m35pTEwPr/vLPm0kfhd7UwanrISSGXUyTp4lkirDILb0IX3OYYErnJQDuxqVtSvPWqgl 9mQw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787243932; x=1787848732; h=content-transfer-encoding:mime-version:references:in-reply-to :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=CPlnl0c+av+7GGCcZbUoectiWvhIiUxuEWP60z55SlU=; b=HYMxGvV5fdd5TtEaZiqmshpBYJ5e2ElzJYg9Y2QNOmmD3GCf0npY7VEGbfUuW2asZf 5l7jpUP2RClk7HedKptaLEr440xuEnCKBxVIPSTosMYNjRBjX5epBiriwDtPJoeUJWb8 722OjnKR9EtYJ26sv5l9RTL5qNrz8nQD4Iu4zEJVH/JpxZfaKkBrTG63019FPnNZSTCL lMv889ST0UHalNZ0g01ln8oEWjU9193BDeYyNFVirX2VVbUZL8SKl9hapqCahmpZfiSp /ew/O29tVmijRe53MvrevX0dsWdl/Ai0eiNGwtwZMOMEGtvkD3tpwBQ65nuwtRO6T3p4 nN/w== X-Gm-Message-State: AOJu0Yx+ngeR3Va7mWtmiO1kfGAGyD+xeV+62JFLc2JFFTlQR60ljr3P ZEXieZteX7FrCx2MBas/PoTLzUVIdJAroiG5xo61arezs8/5xqhcw6pN+GTyYJx3 X-Gm-Gg: AR+sD12jGJwqNmTL1V9pTiNiGwiE75AK7n3pKcavhl/G/fAbyqYplsaMAFPUFgw8vZ/ Tg/fAArlvmzXeQ83Gbu4rSrqSSkux4jTa8W8Vi8wrzpNogNVdJ1Ai53BD7NV+EDyNaUL7mlARGc by9j702KNnNmPtYDjQnnSd7gsnArOqpdtJOSIqH3IgIQuv/20hmhOwhCd9HYUq2XGagszpymh4d DO6dtF6Xc06tkQhy8u4Vm+iIEWFasu6WIqaXJ3luW9WUHDEB9qtYgZ4M53VrC9F43K9XRy7hI2p NygEsDKAlzee45OHph1q05AJ8HNyX4RqplmXCHJwYrrg6ANIgyt7U6BQNIuXLf/0PCK5wRvL7Gc Z1xMUyLa+zbWnOyP0A96WYDb3wUKHFA2rgz0mfnSzvHPp6YNULzsfA9zRo8yL9BqqEGvaIMgPNd hPVIDqJkyXVcQyEg2eQZgW8cseCXA9gPvOSqrN6wBbu76r9lF+QUgWi0HlkDVvxtQiiVucii3cl 6i3WbUATduwbw1F8rA4ex2jUmcpoDRQ9GHwFgZ+KNuIz+PsoNeAWTaIXHALXj3UhgdMy+QWq6yH X-Received: by 2002:a17:907:1c26:b0:c16:101d:7afa with SMTP id a640c23a62f3a-c242a5a4511mr1113104366b.16.1787243931584; Thu, 20 Aug 2026 09:38:51 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 2/4] bhyve: process: discard stale live definition on reconnect failure Date: Thu, 20 Aug 2026 18:38:08 +0200 Message-ID: <20260820163810.81380-3-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260820163810.81380-1-bogorodskiy@gmail.com> References: <20260820163810.81380-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 5D2F6N3J77BXGX6STUNU5573J4Q4BO6E X-Message-ID-Hash: 5D2F6N3J77BXGX6STUNU5573J4Q4BO6E 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: 1787244185299158500 Content-Type: text/plain; charset="utf-8" When reconnect to a domain fails, its status is set to SHUTOFF. Also call virDomainObjRemoveTransientDef() to make sure we do not mix vm->def and vm->newDef later. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_process.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index 9578b8003c..dee3368cfc 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -887,6 +887,7 @@ virBhyveProcessReconnect(virDomainObj *vm, vm->def->id =3D -1; virDomainObjSetState(vm, VIR_DOMAIN_SHUTOFF, VIR_DOMAIN_SHUTOFF_UNKNOWN); + virDomainObjRemoveTransientDef(vm); ignore_value(virDomainObjSave(vm, data->driver->xmlopt, BHYVE_STATE_DIR)); } --=20 2.52.0 From nobody Tue Aug 25 02:49:52 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=1787244129; cv=none; d=zohomail.com; s=zohoarc; b=Adnsn4bIW6vvL0WZBzWwhOi4YVkRHP4KfhOZGdZQPiqzDxJrw53+cxol/6vRulYfINnvAtXFBOn9BeBlcL0bhxCkU6TqYESy40uj568/uqzSFP1NnFcsyh2LlmKK6R9q12/nHmblHUxTENXLr3uRhmFKakdYfGr2L45T6ST9Ks0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244129; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=JfcPQEQMfd4+N+86JfwLEPshJ0cimLUTUrONds85fUU=; b=PiFDQ1NSK7VYKp5BfnE1xG63iXt6pVpSw4t6N6gDHah0Cm5FYjS/HXDQ/czGq996NcibdN46MG7gt0qVo5aIlDAxbf5YSow7kTfq62KWQzzLN3eMh2XBnNrVe/56GkltC7fL2xTZwsonkwbPyxK/mB4YBl4wixiY75ErrUWXdOg= 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 17872441297601004.8674333846938; Thu, 20 Aug 2026 09:42:09 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 7FC7B419DD; Thu, 20 Aug 2026 12:42:08 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 3C70741BFA for ; Thu, 20 Aug 2026 12:39:20 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 2045B3F950; Thu, 20 Aug 2026 12:38:54 -0400 (EDT) Received: from mail-ej1-x629.google.com (mail-ej1-x629.google.com [IPv6:2a00:1450:4864:20::629]) (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 77BB63F97A for ; Thu, 20 Aug 2026 12:38:53 -0400 (EDT) Received: by mail-ej1-x629.google.com with SMTP id a640c23a62f3a-c2055f5a993so2352866b.2 for ; Thu, 20 Aug 2026 09:38:53 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2458b58a50sm101557066b.26.2026.08.20.09.38.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:38:51 -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=1787243932; x=1787848732; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=JfcPQEQMfd4+N+86JfwLEPshJ0cimLUTUrONds85fUU=; b=jDduDOfRacTjgOj5BL3ThppmHA/pig0mIPByVfdl2uDyEOyFrYkRlYxvaIxZcj41ul zMU02PAnLp13uGeEYWzCpDW7ReYNy6r1NsomH9zOFdFecDoRn5hpX/uPgqlhVJYxwlk7 0XHUryzZ7Cd72ABKiSLKB9bdt18QDEQ+1RzB8ey3VnVj3+8KVcx3J9iMjIcwZLHqD62b RE6UToZ48l+Hos+Zr0aLnoob65d5vPuWlWKzhjaN/zsVFNzDi3CLwbTj5j/g8OTO/8oV O0LF/PaG766/9ugMXiT5jZfabcVQinWJv5/edFFHm+ZmAE0GTCNQEUdPvcUoL015+6v5 R5aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787243932; x=1787848732; h=content-transfer-encoding:mime-version:references:in-reply-to :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=JfcPQEQMfd4+N+86JfwLEPshJ0cimLUTUrONds85fUU=; b=Cx/+Y6S7IAuv4OCpwyZ+hfCWh+AuplniM+hb4G2gOkN3LbEOZRxCCwj12vzeVhXVnu YYaWYMDUMZ9ykpku6pc0UXrITQmAEpLA9vqaAvlv6JPN0yMhLKvq8rs0rZ7QZDmH67jC 1wXddyXBzDfVt5JABH59wwh7gshPRTRYNNULNKfiYTUQcUpKrL2G8V/MDi3HjaocfT5h xikAJgkglI/rWdyhKL9//y+KZYA0rmYqTxr7hHHImqiOarPrQkgMet77AxNcMCAd4vCo l98UXI0ka4E38acKF5/r6vm9L6o7aZesAZI3XOKkZ8fKX+oxHuqdCNsVAMkVSGDvoo28 8nVg== X-Gm-Message-State: AOJu0Yw3zLy98pkm19IpzyBs0O1MdMIeEEzop4maJ5TTOYLHGgvY9ghS Hb7EVx5zVpDr5L2v9d8aB129lkRGrFD3TlHGt5jZSoyD7f5PE6j8+OgrqIInPwpr X-Gm-Gg: AR+sD10cksRpN3v1678s/IjTt/JvhBnLfLj/Ds5tY9pl6S9o8/lTu99Lt2H8kULPdv4 7l7nS/u9fkhDLx69HDlUgrQuoJgcwG3bcqtjO/uMjmvpS2D7z9i5Y5yQk9sQg4opobhqIgGkTAk KhZOUl429SGRoVM+jbYY9Llo4Z46RZsMFMXN5PVH+5+iT2iflKfqOYjlFxeVWivrKwPtV/JKFp3 7kNfZjFWXse630g9nZ7wgmDvQDg86nhJvzYw0+d0lSGUmTOqpNF0WMqH2lCRwjNYLIC6334aGLB Kvznt90gUhCgryTfOMcJk2CiWMF+gXU9339ne+h33JN3/rhXWhLaaq6qXLG7p/6iXiwYE7zx8b1 WLp2OvDJv/VfKl55G18hcIDHYgZ7wdGIZNbbcDSynO44SnSQrEO16FKak+3evJc628u4TWhPegd UcyvaEqSDrzWhrsnQ6MCVoX2DNNjDSzFCniAoNJ0QtH/ojLnn9eGFYGUJ8hTE0mXNcVga+dru6v XBFgoJsLuN7makHBCukn/jC2O6MkNSVb1rzd/tQfHKbA+fSu+luuAtam4+MbbmI5MCE2QbYWW8h PZwdwWpN+g== X-Received: by 2002:a17:906:9c82:b0:c20:88a6:8210 with SMTP id a640c23a62f3a-c23f93750edmr904262166b.9.1787243932096; Thu, 20 Aug 2026 09:38:52 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 3/4] bhyve: honor VIR_DOMAIN_XML_INACTIVE in virDomainGetXMLDesc() Date: Thu, 20 Aug 2026 18:38:09 +0200 Message-ID: <20260820163810.81380-4-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260820163810.81380-1-bogorodskiy@gmail.com> References: <20260820163810.81380-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: LDXZDVVRNFYYYMIQJLDY5OTUYUNF5NLC X-Message-ID-Hash: LDXZDVVRNFYYYMIQJLDY5OTUYUNF5NLC 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: 1787244130927158500 Content-Type: text/plain; charset="utf-8" For an active persistent domain, vm->def contains the live definition and vm->newDef contains the persistent definition. Use vm->newDef when VIR_DOMAIN_XML_INACTIVE is requested so that the persistent XML is returned. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_driver.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 1f44ea8598..2c4ec911a7 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -507,6 +507,7 @@ bhyveDomainGetXMLDesc(virDomainPtr domain, unsigned int= flags) { struct _bhyveConn *privconn =3D domain->conn->privateData; virDomainObj *vm; + virDomainDef *def; char *ret =3D NULL; =20 virCheckFlags(VIR_DOMAIN_XML_COMMON_FLAGS, NULL); @@ -517,7 +518,12 @@ bhyveDomainGetXMLDesc(virDomainPtr domain, unsigned in= t flags) if (virDomainGetXMLDescEnsureACL(domain->conn, vm->def, flags) < 0) goto cleanup; =20 - ret =3D virDomainDefFormat(vm->def, privconn->xmlopt, + if ((flags & VIR_DOMAIN_XML_INACTIVE) && vm->newDef) + def =3D vm->newDef; + else + def =3D vm->def; + + ret =3D virDomainDefFormat(def, privconn->xmlopt, virDomainDefFormatConvertXMLFlags(flags)); =20 cleanup: --=20 2.52.0 From nobody Tue Aug 25 02:49:52 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=1787244271; cv=none; d=zohomail.com; s=zohoarc; b=b3i0pjnMOrpXg99BzEM/abGIiFI9Jdk11ZH/jdpvWTBw6gB0uzeQcLstsEr6vfPDGqRxGnXeUrG8oa3KidEc9WhvafZY5kr9tGuO1jcHMqt+KqFb/s3SEnCOnFjHn0l4/NBe/AtlEKIhzjnQUMyVqSK7Q77Sm+jtChCG8maiijA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787244271; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Owner:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Subject:Subject:To:To:Message-Id:Reply-To; bh=lwZwE9wXjDZp962FLcwod9daLe+doKV5q/IY6i9+dGQ=; b=DzoWOGk5lSm8ZPxuV4WDVbidv3bfH3LF3ieWJY6EmAHjWhK3TSR4CANi3XfBshZQrUrqW7ToahhQcAMecV/dObgR2jhQQ9z1EE0N5h2stlKFjLvjW3+uzpwgjdhj2SacVPTnFbprxkBn9Mud8qRUSlXtKlHf5IfwgXQpY4QHoQY= 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 1787244271236990.1955888080975; Thu, 20 Aug 2026 09:44:31 -0700 (PDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 100BC41AEE; Thu, 20 Aug 2026 12:44:30 -0400 (EDT) Received: from [172.19.199.13] (unknown [10.16.107.18]) by lists.libvirt.org (Postfix) with ESMTP id 23227418FC for ; Thu, 20 Aug 2026 12:39:34 -0400 (EDT) Received: by lists.libvirt.org (Postfix, from userid 993) id 9ABA73F97A; Thu, 20 Aug 2026 12:38:55 -0400 (EDT) Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) (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 88B693F950 for ; Thu, 20 Aug 2026 12:38:54 -0400 (EDT) Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-c15d47266baso1846666b.3 for ; Thu, 20 Aug 2026 09:38:54 -0700 (PDT) Received: from tulp.my.domain (2001-1c02-1a15-3000-ee82-4536-a8f2-9e22.cable.dynamic.v6.ziggo.nl. [2001:1c02:1a15:3000:ee82:4536:a8f2:9e22]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c2458b58a50sm101557066b.26.2026.08.20.09.38.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Aug 2026 09:38:52 -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=1787243933; x=1787848733; darn=lists.libvirt.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=lwZwE9wXjDZp962FLcwod9daLe+doKV5q/IY6i9+dGQ=; b=RtA25WAVY0e6PcpiO3ntwyvjORgo3Drcy8MuvSP82yvES+gQxXKd2lKJ5XKrsrCvtX MoMTUbNuixAYREFDBSv/fW2M7RzU8Z3JycGtV9aZkCFXTJqyLEpoNodZhES6sFHg7eCZ Mh6ikomfrAUWJqcQXjUZRFqKP3cRA75q+CgDjDtxm6PigcC07/UeGiw90wZFjizfRKiO NDxtkqlKiZ1HgdFnTAxbQpCEN40psiUDqGLOYxOKKkCOah1JG6pLHI2Duq5qRW9wom1M itCmcsZvfZC5zxAhQmg+0omI7Vz21bfqM/8sj1S2CM5vlxU/Z1+w7f7k2LBk0xqgr8ro FYHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787243933; x=1787848733; h=content-transfer-encoding:mime-version:references:in-reply-to :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=lwZwE9wXjDZp962FLcwod9daLe+doKV5q/IY6i9+dGQ=; b=UFHMJgWw72A8sGK50Q7Y4zN7VD6kuACGrREQPQx/ZuWwRAlo9vYsr7M7W9r6nMGy1p 8tPreu9zIbyQv1zFbSBPKEvRiagHR5gNtt36P/Xf/HGhOZrMKhm2qHzLuUMYkGWcISF9 YunfbXfdkLsuZXuqjcssWNVhms7pUHRk/pMnAkAbuF4FbKACykFtuaVNdY0HHoSzFS/y 19BNnJQsvTIAnqQb4PF1334Ok9AR48yVtApgtxrEAQbf/ozmH0+31sBV9JY45KZq08tT mBGSfLsLlKyPitCljSmlRiATO1aIkfD23kN9ZBlIleKW+Tc8Bat5NU8PBrd368UaCdca 6fHA== X-Gm-Message-State: AOJu0YzIdVNPu9qh7FQ7L2AwNyK2OYwqm5ji0uV97qn20medXTxyJb4j b2Hoj7wSn7NCyKl6lOsxcZEKsQzGfGY56zW1RZmV1iZTEZVGK/+o5iRRXAokOtIn X-Gm-Gg: AR+sD12VPKPTrSIQ3AVwN1uNyW6YaCd4/nZLpNPNl2Ob2djq0exGOVnYoArc3KH8qVs vK0pR5Q2eypChFo9USSPSrmXrxuipZG4XJWNjT8//neKM+aW0tLaEFqyH5lzxcxH4lSJ2cPbhyu lGT9yMF5+iC2SEb8WlP8S7kkt6uskflyX/L4OLLx3oO4fwVQOvSjtzomIpFuQVg4q8vKcIvg7sw myYXVz716RnlGKidoGC10uoI5IJ/A4p81H8RArUphXm/V6We23EEBboFm+L8yi3241b8i2aaM9i /tJ5nJSxgXlHGZu4KunapBvTdYgu4hilbaWVcnOybEi0JIJJwLR2l1q4aBU77eN0U7rxBq9OpQO T7MwoMTK9ijNFPXurRLIWWTbLm+zgGvciH+FusEHVayCyURibp8lAqnnQv7zL5/geDDDafoHVHf MQtnIJBporQUH/Ajiox9R9qsKuGuOSJvV8o41LBmp/i1p4unVrzf4TcbnrYL6Hp+nGC+WezlR6h UMZtQldgI/fIwj7/kxl6ktPd3x85wscWx5Kfn/ebOpnW/etAj9hfiE4MIExB6WUf1AIfwvr/yc= X-Received: by 2002:a17:907:3e18:b0:c20:33db:41d3 with SMTP id a640c23a62f3a-c242e1e6a65mr1076414666b.11.1787243933095; Thu, 20 Aug 2026 09:38:53 -0700 (PDT) From: Roman Bogorodskiy To: devel@lists.libvirt.org Subject: [PATCH 4/4] bhyve: domain: fix filling of firmware data Date: Thu, 20 Aug 2026 18:38:10 +0200 Message-ID: <20260820163810.81380-5-bogorodskiy@gmail.com> X-Mailer: git-send-email 2.52.0 In-Reply-To: <20260820163810.81380-1-bogorodskiy@gmail.com> References: <20260820163810.81380-1-bogorodskiy@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3XWULRKO3OR7A3PZ332TR3ALYIJVXGZ3 X-Message-ID-Hash: 3XWULRKO3OR7A3PZ332TR3ALYIJVXGZ3 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: 1787244271786158500 Content-Type: text/plain; charset="utf-8" Fixing the transient definition bug in a0d2ec63b99c4e0f500d6b61a208be48b3e3= b396 exposed another issue: the startup filled firmware data is only available in the live definition. Thus, after shutdown, there is no information about the VARS file, so `virsh undefine --nvram` cannot remove it. Fix that by filling firmware data in the domain XML post-parse stage. Signed-off-by: Roman Bogorodskiy Reviewed-by: Michal Privoznik --- src/bhyve/bhyve_domain.c | 11 ++++++++++- src/bhyve/bhyve_driver.c | 10 +++++++--- src/bhyve/bhyve_firmware.c | 12 ++++++------ src/bhyve/bhyve_firmware.h | 2 +- src/bhyve/bhyve_process.c | 4 +++- .../three_firmwares/BHYVE_UEFI_VARS.fd | 0 .../x86_64/bhyvexml2xmlout-numa.xml | 2 ++ tests/bhyvexml2xmltest.c | 10 +++++++++- 8 files changed, 38 insertions(+), 13 deletions(-) create mode 100644 tests/bhyvefirmwaredata/three_firmwares/BHYVE_UEFI_VARS= .fd diff --git a/src/bhyve/bhyve_domain.c b/src/bhyve/bhyve_domain.c index 3b5a9b47a3..08c4156f2b 100644 --- a/src/bhyve/bhyve_domain.c +++ b/src/bhyve/bhyve_domain.c @@ -21,6 +21,7 @@ =20 #include =20 +#include "bhyve_firmware.h" #include "bhyve_driver.h" #include "bhyve_conf.h" #include "bhyve_device.h" @@ -119,7 +120,7 @@ bhyveDomainDefNeedsISAController(virDomainDef *def) =20 static int bhyveDomainDefPostParse(virDomainDef *def, - unsigned int parseFlags G_GNUC_UNUSED, + unsigned int parseFlags, void *opaque, void *parseOpaque G_GNUC_UNUSED) { @@ -130,6 +131,8 @@ bhyveDomainDefPostParse(virDomainDef *def, size_t virtio_serial_controllers =3D 0; size_t virtio_serial_existing_controllers =3D 0; size_t virtio_serial_controllers_to_create =3D 0; + bool abiUpdate =3D !!(parseFlags & VIR_DOMAIN_DEF_PARSE_ABI_UPDATE); + if (!caps) return -1; =20 @@ -203,6 +206,12 @@ bhyveDomainDefPostParse(virDomainDef *def, } } =20 + if (bhyveFirmwareFillDomain(driver, def, abiUpdate) < 0) { + if (abiUpdate) + return -1; + virResetLastError(); + } + return 0; } =20 diff --git a/src/bhyve/bhyve_driver.c b/src/bhyve/bhyve_driver.c index 2c4ec911a7..41bcf9b559 100644 --- a/src/bhyve/bhyve_driver.c +++ b/src/bhyve/bhyve_driver.c @@ -541,7 +541,8 @@ bhyveDomainDefineXMLFlags(virConnectPtr conn, const cha= r *xml, unsigned int flag virDomainObj *vm =3D NULL; virObjectEvent *event =3D NULL; g_autoptr(virCaps) caps =3D NULL; - unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; + unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE | + VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; =20 virCheckFlags(VIR_DOMAIN_DEFINE_VALIDATE, NULL); =20 @@ -760,7 +761,9 @@ bhyveConnectDomainXMLToNative(virConnectPtr conn, } =20 if (!(def =3D virDomainDefParseString(xmlData, privconn->xmlopt, - NULL, VIR_DOMAIN_DEF_PARSE_INACTIV= E))) + NULL, + VIR_DOMAIN_DEF_PARSE_INACTIVE | + VIR_DOMAIN_DEF_PARSE_ABI_UPDATE))) return NULL; =20 if (bhyveDomainAssignAddresses(def, NULL) < 0) @@ -951,7 +954,8 @@ bhyveDomainCreateXML(virConnectPtr conn, virDomainObj *vm =3D NULL; virObjectEvent *event =3D NULL; unsigned int start_flags =3D 0; - unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE; + unsigned int parse_flags =3D VIR_DOMAIN_DEF_PARSE_INACTIVE | + VIR_DOMAIN_DEF_PARSE_ABI_UPDATE; =20 virCheckFlags(VIR_DOMAIN_START_AUTODESTROY | VIR_DOMAIN_START_VALIDATE, NULL); diff --git a/src/bhyve/bhyve_firmware.c b/src/bhyve/bhyve_firmware.c index 54e3ce296a..9b8eb98ca6 100644 --- a/src/bhyve/bhyve_firmware.c +++ b/src/bhyve/bhyve_firmware.c @@ -41,7 +41,8 @@ VIR_LOG_INIT("bhyve.bhyve_firmware"); =20 static void bhyveFirmwareEnsureNVRAM(virDomainDef *def, - bhyveConn *driver) + bhyveConn *driver, + bool abiUpdate) { g_autoptr(virBhyveDriverConfig) cfg =3D virBhyveDriverGetConfig(driver= ); virDomainLoaderDef *loader =3D def->os.loader; @@ -98,7 +99,8 @@ bhyveFirmwareEnsureNVRAM(virDomainDef *def, * * If we're loading an existing domain, however, we need to * stick with the .fd extension to ensure compatibility */ - if (loader->nvramTemplate && + if (abiUpdate && + loader->nvramTemplate && virStringHasSuffix(loader->nvramTemplate, ".raw")) ext =3D ".raw"; else @@ -112,7 +114,7 @@ bhyveFirmwareEnsureNVRAM(virDomainDef *def, int bhyveFirmwareFillDomain(bhyveConn *driver, virDomainDef *def, - unsigned int flags) + bool abiUpdate) { g_autoptr(DIR) dir =3D NULL; g_autoptr(virBhyveDriverConfig) cfg =3D virBhyveDriverGetConfig(driver= ); @@ -123,8 +125,6 @@ bhyveFirmwareFillDomain(bhyveConn *driver, g_autofree char *matching_nvram_template =3D NULL; g_autofree char *first_found =3D NULL; =20 - virCheckFlags(0, -1); - if (!ARCH_IS_X86(def->os.arch)) return 0; =20 @@ -190,7 +190,7 @@ bhyveFirmwareFillDomain(bhyveConn *driver, loader->path =3D g_build_filename(firmware_dir, matching_firmware, NUL= L); =20 out: - bhyveFirmwareEnsureNVRAM(def, driver); + bhyveFirmwareEnsureNVRAM(def, driver, abiUpdate); =20 return 0; } diff --git a/src/bhyve/bhyve_firmware.h b/src/bhyve/bhyve_firmware.h index ae7bd8a2b6..1ff7853909 100644 --- a/src/bhyve/bhyve_firmware.h +++ b/src/bhyve/bhyve_firmware.h @@ -27,4 +27,4 @@ int bhyveFirmwareFillDomain(bhyveConn *driver, virDomainDef *def, - unsigned int flags); + bool abiUpdate); diff --git a/src/bhyve/bhyve_process.c b/src/bhyve/bhyve_process.c index dee3368cfc..65cf61c578 100644 --- a/src/bhyve/bhyve_process.c +++ b/src/bhyve/bhyve_process.c @@ -449,7 +449,9 @@ bhyveProcessPrepareDomain(bhyveConn *driver, virDomainObj *vm, unsigned int flags) { - if (bhyveFirmwareFillDomain(driver, vm->def, flags) < 0) + virCheckFlags(0, -1); + + if (bhyveFirmwareFillDomain(driver, vm->def, false) < 0) return -1; =20 return 0; diff --git a/tests/bhyvefirmwaredata/three_firmwares/BHYVE_UEFI_VARS.fd b/t= ests/bhyvefirmwaredata/three_firmwares/BHYVE_UEFI_VARS.fd new file mode 100644 index 0000000000..e69de29bb2 diff --git a/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-numa.xml b/te= sts/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-numa.xml index ecc147db78..0066de9d6e 100644 --- a/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-numa.xml +++ b/tests/bhyvexml2xmloutdata/x86_64/bhyvexml2xmlout-numa.xml @@ -6,6 +6,8 @@ 8 hvm + fakefirmwaredi= r/BHYVE_UEFI.fd + = fakenvramdir/bhyve_VARS.fd diff --git a/tests/bhyvexml2xmltest.c b/tests/bhyvexml2xmltest.c index 120bdd42e5..9071f5e7f0 100644 --- a/tests/bhyvexml2xmltest.c +++ b/tests/bhyvexml2xmltest.c @@ -56,6 +56,8 @@ testCompareXMLToXMLHelper(const void *data) static int mymain(void) { + g_autofree char *fakefirmwaredir =3D g_strdup("fakefirmwaredir"); + g_autofree char *fakenvramdir =3D g_strdup("fakenvramdir"); g_autofree char *fakeubootpath =3D g_strdup("fakeubootpath/u-boot.bin"= ); int ret =3D 0; =20 @@ -68,7 +70,12 @@ mymain(void) if (!(driver.config =3D virBhyveDriverConfigNew())) return EXIT_FAILURE; =20 - driver.config->ubootPath =3D fakeubootpath; + VIR_FREE(driver.config->firmwareDir); + VIR_FREE(driver.config->nvramDir); + VIR_FREE(driver.config->ubootPath); + driver.config->firmwareDir =3D g_steal_pointer(&fakefirmwaredir); + driver.config->nvramDir =3D g_steal_pointer(&fakenvramdir); + driver.config->ubootPath =3D g_steal_pointer(&fakeubootpath); =20 # define DO_TEST_FULL(name, flags) \ do { \ @@ -176,6 +183,7 @@ mymain(void) =20 virObjectUnref(driver.caps); virObjectUnref(driver.xmlopt); + virObjectUnref(driver.config); =20 return ret =3D=3D 0 ? EXIT_SUCCESS : EXIT_FAILURE; } --=20 2.52.0