From nobody Fri Jan 9 08:53:58 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=1766965425; cv=none; d=zohomail.com; s=zohoarc; b=kk5AD+wkcJD2k7kCYB+me8q/AP5rt3KNMC8nx9pYJAD7ETUB4gxkLwaRKDBdogS7ossdK8CC+gu3pDTDSh0fdTcqoYqpwUBYR03AkE8l7bL24RAxXikJppExe+/ejbKpYeeLcSmD3jpYeuropQVNUPi1iHzVgI2i78ZJhVvE4jQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766965425; 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=6uVPk0fo+EeDJcyR345tRh/Fw1dt+YrHPB7gV+1x76M=; b=b9jjJWn4D8TG5VVsoByYz+lYTcSTEDtnbLDbWTlgFfAQNLxm1LA3K67gnsVehorAt23atCAA+6UrFKg/cBIySIlQxHAZykUk87Srqpq/yNnLHWAn1j348WwZgjSH6N570AIvXmz4McKCg54xzgLp4cPEKRRHvca51+bAyJ+dp+U= 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 1766965424989214.6475122097729; Sun, 28 Dec 2025 15:43:44 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id 94FB241802; Sun, 28 Dec 2025 18:42:37 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id 3344041873; Sun, 28 Dec 2025 18:39:44 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id 363433FD11; Sun, 28 Dec 2025 18:34:23 -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 0F6DE417F3 for ; Sun, 28 Dec 2025 18:34:22 -0500 (EST) Received: from mx-prod-mc-05.mail-002.prod.us-west-2.aws.redhat.com (ec2-54-186-198-63.us-west-2.compute.amazonaws.com [54.186.198.63]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-435-GSkRsLR2PiWcjcEIgHMKvg-1; Sun, 28 Dec 2025 18:34:20 -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-05.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id 93519195608D for ; Sun, 28 Dec 2025 23:34:19 +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 D53B330001A8 for ; Sun, 28 Dec 2025 23:34:18 +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=1766964861; 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=6uVPk0fo+EeDJcyR345tRh/Fw1dt+YrHPB7gV+1x76M=; b=DG5zQLU8QGN8E42FAhH+oM5+pNub/3NYNcVHVbiuXTF9mX6zNRRb6xkJx+73uK2sWfZE4a YmF6zHxNKYC15hh65EARrdWdUALOLF+QRowY4eIw4fll6QEuN38g9jyegKeeuecEd7wqrt dgKpI/emddoH1tQYWIjwOcP5T6Dcyhs= X-MC-Unique: GSkRsLR2PiWcjcEIgHMKvg-1 X-Mimecast-MFC-AGG-ID: GSkRsLR2PiWcjcEIgHMKvg_1766964859 To: devel@lists.libvirt.org Subject: [PATCH 03/36] qemu_firmware: Move format=raw compat exception Date: Mon, 29 Dec 2025 00:33:39 +0100 Message-ID: <20251228233412.1709869-4-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: hcjtqk-5UuyDG4RwRdy4Vy-yAopPBw81qKoOJLw-s78_1766964859 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: NTRND4C3LHUL4JI45EDJAMSANHL4AJR4 X-Message-ID-Hash: NTRND4C3LHUL4JI45EDJAMSANHL4AJR4 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: 1766965427226158500 Content-Type: text/plain; charset="utf-8"; x-default="true" We currently apply this exception, which is critical to ensure that the correct firmware is selected when working with older VMs, in the postparse callback. Move it to the firmware selection process instead, where it should have been added in the first place. Signed-off-by: Andrea Bolognani --- src/qemu/qemu_firmware.c | 20 ++++++++++++++++++++ src/qemu/qemu_postparse.c | 17 ----------------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 903b0a984d..6c609ece6a 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1783,6 +1783,26 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, bool autoSelection =3D (def->os.firmware !=3D VIR_DOMAIN_OS_DEF_FIRMWA= RE_NONE); int ret; =20 + /* 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 + * could never have resulted, before libvirt 9.2.0, in anything + * but a raw firmware image being selected. + * + * In order to ensure that existing domains keep working even if + * a firmware descriptor for a build with a different format is + * given higher priority, explicitly add this requirement to the + * definition before performing firmware selection */ + if (!abiUpdate && autoSelection) { + if (!loader) { + def->os.loader =3D virDomainLoaderDefNew(); + loader =3D def->os.loader; + } + if (!loader->format) { + loader->format =3D VIR_STORAGE_FILE_RAW; + } + } + /* Start by performing a thorough validation of the input. * * We need to do this here because the firmware selection logic diff --git a/src/qemu/qemu_postparse.c b/src/qemu/qemu_postparse.c index 840d6a1174..8940cb09b3 100644 --- a/src/qemu/qemu_postparse.c +++ b/src/qemu/qemu_postparse.c @@ -1051,23 +1051,6 @@ qemuDomainDefBootPostParse(virDomainDef *def, { bool abiUpdate =3D !!(parseFlags & VIR_DOMAIN_DEF_PARSE_ABI_UPDATE); =20 - /* 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 - * could never have resulted, before libvirt 9.2.0, in anything - * but a raw firmware image being selected. - * - * In order to ensure that existing domains keep working even if - * a firmware descriptor for a build with a different format is - * given higher priority, explicitly add this requirement to the - * definition before performing firmware selection */ - if (!abiUpdate && def->os.firmware) { - if (!def->os.loader) - def->os.loader =3D virDomainLoaderDefNew(); - if (!def->os.loader->format) - def->os.loader->format =3D VIR_STORAGE_FILE_RAW; - } - /* Firmware selection can fail for a number of reasons, but the * most likely one is that the requested configuration contains * mistakes or includes constraints that are impossible to --=20 2.52.0