From nobody Fri Jan 9 09:10:15 2026 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Received-SPF: pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) client-ip=8.43.85.245; envelope-from=devel-bounces@lists.libvirt.org; helo=lists.libvirt.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass(p=reject dis=none) header.from=lists.libvirt.org ARC-Seal: i=1; a=rsa-sha256; t=1766965482; cv=none; d=zohomail.com; s=zohoarc; b=aGJ4+98EyfXdYfWD9yFPb5MyEAR07m+/p3q0rwcSxAD8h9CTDcDdPlg3ZaEz5c2na6ZzQnKuoJvo3yPsPQ+PktM+9kceB3nhMZ1o8fWQQagrBOHhSO1nd7iVdu+jwK5DaH+NbrA0NF+1r9yPVVsOQIsYA93aw2FJZGzsYBV0t5o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766965482; h=Content-Type:Content-Transfer-Encoding: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:Reply-To:Reply-To:References:Subject:Subject:To:To:Message-Id:Cc; bh=9D8QA9BqDD5Q/96KV9hB9b419N53nXHfgzKaMdU1Wec=; b=ZsDKWlxt7svpkPd0KHawJnr29akNxdFV4s/6FKKZ2Q2FHBaMhT2SEJEejOxIVFlQ3GiWjUAuKUtoul1Y6yfeER/dlOuUZDTQOa7B6WveHzAnkq4S8bf96awDb11gFx1R3kTBHxS4/cO8R6WMMcrQpIrmbEGXSiXSsePIt9XDhVs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of lists.libvirt.org designates 8.43.85.245 as permitted sender) smtp.mailfrom=devel-bounces@lists.libvirt.org; dmarc=pass header.from= (p=reject dis=none) Return-Path: Received: from lists.libvirt.org (lists.libvirt.org [8.43.85.245]) by mx.zohomail.com with SMTPS id 1766965482594491.02318670599334; Sun, 28 Dec 2025 15:44:42 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id A11C7418AF; Sun, 28 Dec 2025 18:43:50 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 0CB1F41A1A; Sun, 28 Dec 2025 18:39:57 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 782573FD11; Sun, 28 Dec 2025 18:34:24 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) (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 952E1417EB for ; Sun, 28 Dec 2025 18:34:23 -0500 (EST) Received: from mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (ec2-35-165-154-97.us-west-2.compute.amazonaws.com [35.165.154.97]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-439-CY7VhH4OPUGLSVJr6C3DkA-1; Sun, 28 Dec 2025 18:34:21 -0500 Received: from mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mx-prod-mc-08.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id C62861800342 for ; Sun, 28 Dec 2025 23:34:20 +0000 (UTC) Received: from harajuku.usersys.redhat.com.homenet.telecomitalia.it (unknown [10.45.224.19]) by mx-prod-int-01.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 13C9530001A8 for ; Sun, 28 Dec 2025 23:34:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on lists.libvirt.org X-Spam-Level: X-Spam-Status: No, score=-5.0 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED,RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED,SPF_PASS autolearn=unavailable autolearn_force=no version=4.0.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1766964863; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=9D8QA9BqDD5Q/96KV9hB9b419N53nXHfgzKaMdU1Wec=; b=XMFjenQkyHEG385tkf19S4sTwBChopQDbQXYcQAWO6UU2XqHLnQn7oQIsfhR9PyA0nBpzf Xl7gJlsP9QoNfuveSrMgAqs/1xjW7HWEI+YkQzd3n6FkyfCYnEKPIuzwgHDHUmvgnnm2i2 dv9a4tJu2IQ06rdOIFGzA9Ay9nA5Uk8= X-MC-Unique: CY7VhH4OPUGLSVJr6C3DkA-1 X-Mimecast-MFC-AGG-ID: CY7VhH4OPUGLSVJr6C3DkA_1766964860 To: devel@lists.libvirt.org Subject: [PATCH 04/36] qemu_firmware: Move copying of nvram.format to loader.format Date: Mon, 29 Dec 2025 00:33:40 +0100 Message-ID: <20251228233412.1709869-5-abologna@redhat.com> In-Reply-To: <20251228233412.1709869-1-abologna@redhat.com> References: <20251228233412.1709869-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.4 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: fdeuS963pzJnHU1pjdilzChKjSPDXZblOvwy6mOucYM_1766964860 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: R6SYIFHZ4OF26YIFZ5VTK3243A6QVTAY X-Message-ID-Hash: R6SYIFHZ4OF26YIFZ5VTK3243A6QVTAY X-MailFrom: abologna@redhat.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 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: From: Andrea Bolognani via Devel Reply-To: Andrea Bolognani X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1766965483321158500 Content-Type: text/plain; charset="utf-8"; x-default="true" As explained in the comment that comes along with it, this code ensures that the user's preference is taken into account when nvram.format is the only information that's provided. Currently it lives in the parser, but it makes more sense for it to be together with the rest of the firmware selection code instead. Note that this move is not completely seamless: once the code is moved outside of the parser, it can no longer reliably know whether the element actually existed in the domain XML. The difference is subtle enough that the test suite is completely unaffected, and we are going to rework the handling of this scenario in a way that restores the original behavior later anyway, so it ultimately doesn't matter. Signed-off-by: Andrea Bolognani --- src/conf/domain_conf.c | 18 +----------------- src/qemu/qemu_firmware.c | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 541dad5bdc..25494cb01a 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -17823,24 +17823,8 @@ virDomainLoaderDefParseXMLLoader(virDomainLoaderDe= f *loader, { unsigned int format =3D 0; =20 - if (!loaderNode) { - /* If there is no element but the element - * was present, copy the format from the latter to the - * former. - * - * This ensures that a configuration such as - * - * - * - * - * - * behaves as expected, that is, results in a firmware build - * with format 'foo' being selected */ - if (loader->nvram) - loader->format =3D loader->nvram->format; - + if (!loaderNode) return 0; - } =20 if (virXMLPropTristateBool(loaderNode, "readonly", VIR_XML_PROP_NONE, &loader->readonly) < 0) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 6c609ece6a..a22853361b 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1783,6 +1783,21 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, bool autoSelection =3D (def->os.firmware !=3D VIR_DOMAIN_OS_DEF_FIRMWA= RE_NONE); int ret; =20 + /* If there is no element but the element + * was present, copy the format from the latter to the + * former. + * + * This ensures that a configuration such as + * + * + * + * + * + * behaves as expected, that is, results in a firmware build + * with format 'foo' being selected */ + if (loader && loader->nvram && !loader->format) + loader->format =3D loader->nvram->format; + /* If we're loading an existing configuration from disk, we * should try as hard as possible to preserve historical * behavior. In particular, firmware autoselection being enabled --=20 2.52.0