From nobody Fri Jan 9 08:49:52 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=1766970847; cv=none; d=zohomail.com; s=zohoarc; b=TUejRJpumen8HfshKLS/HW4PdOzQImBo6NBek0F1LWv4BMCTlqmPZiJlZrO5JwPyotmGOMsC+TLTblTVB+LNndYhCynFIBsfBMl8dlSlcdbnU+X1GC7KbrzuWGBdpXSY0Uj0UUcxz1VDUfCK0UclF/YUv9cwWzcsDIXL5wR8/Es= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1766970847; 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=+DfxmG2Szw66DRJhvUS0MxWF0dkXQwdwqWwnuILNocY=; b=UGYbqByHdzQUz7Vlpt+KNywjitgClUJXGXDmPVPhZUaYh2r5p+ptyouK8JOUdZYkueDJV1mnpH6qQzJnWcmIErRWQbI9/CQ/HADW5TCk0udwsAbnqY3WZV5LfGvII1f0akuoSL5TPd4l4xQ1cYy7CD7139vF8owMnMCoJAulUhE= 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 1766970847712753.0366695276431; Sun, 28 Dec 2025 17:14:07 -0800 (PST) Received: by lists.libvirt.org (Postfix, from userid 993) id CB92F3F33D; Sun, 28 Dec 2025 20:13:36 -0500 (EST) Received: from [172.19.199.83] (lists.libvirt.org [8.43.85.245]) by lists.libvirt.org (Postfix) with ESMTP id A671441BD6; Sun, 28 Dec 2025 20:12:27 -0500 (EST) Received: by lists.libvirt.org (Postfix, from userid 993) id CEF11417F4; Sun, 28 Dec 2025 18:49:54 -0500 (EST) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.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 5C99D41C12 for ; Sun, 28 Dec 2025 18:41:25 -0500 (EST) Received: from mx-prod-mc-03.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-412-gMODOQgENc-vCApBNVw25Q-1; Sun, 28 Dec 2025 18:41:23 -0500 Received: from mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com [10.30.177.93]) (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-03.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id B0812195606D for ; Sun, 28 Dec 2025 23:41:22 +0000 (UTC) Received: from harajuku.usersys.redhat.com.homenet.telecomitalia.it (unknown [10.45.224.19]) by mx-prod-int-06.mail-002.prod.us-west-2.aws.redhat.com (Postfix) with ESMTPS id F2F6D1800666 for ; Sun, 28 Dec 2025 23:41:21 +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=1766965285; 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=+DfxmG2Szw66DRJhvUS0MxWF0dkXQwdwqWwnuILNocY=; b=CWUeYbO1TB/7aLkIHq+/yLVC43r+f75g0wp00qSQLFK4nLqm3bqk9nPRmjiagJ0jFp3f7H fyYsADUeEcwP+3C/8fIF6wKAT/5kXal8FrQMbrmjmqdKgtEcDHfbNeWpC28JE2STHpj+ts 5pR0+hPhCJntmlo6thNkKYkmQJ6nrRM= X-MC-Unique: gMODOQgENc-vCApBNVw25Q-1 X-Mimecast-MFC-AGG-ID: gMODOQgENc-vCApBNVw25Q_1766965282 To: devel@lists.libvirt.org Subject: [PATCH 26/29] qemu_firmware: Allow JSON format for NVRAM Date: Mon, 29 Dec 2025 00:40:45 +0100 Message-ID: <20251228234048.1711701-27-abologna@redhat.com> In-Reply-To: <20251228234048.1711701-1-abologna@redhat.com> References: <20251228234048.1711701-1-abologna@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.30.177.93 X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: QzSEzw64vnrZngr6FFxS1hXPEd73OSo3utcttwHdSeQ_1766965282 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: quoted-printable Message-ID-Hash: 3LZFDJYQBL57TCIIRTKTRE2AGRZM2NOF X-Message-ID-Hash: 3LZFDJYQBL57TCIIRTKTRE2AGRZM2NOF 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: 1766970849538158500 Content-Type: text/plain; charset="utf-8"; x-default="true" At this point, the QEMU driver is ready to correctly handle NVRAM files in JSON format, so we can lift the restriction that has existed until now. The firmware-manual-efi-qemuvars-q35 test case now passes, since all the necessary information was already provided in the domain XML and the driver actively rejecting use of JSON was the only thing getting in the way. The firmware-auto-efi-format-nvram-json test case still fails because there are still no firmware descriptors that match the requested configuration. That will change in a future commit. https://issues.redhat.com/browse/RHEL-82645 Signed-off-by: Andrea Bolognani --- src/qemu/qemu_firmware.c | 3 +- ...to-efi-format-nvram-json.x86_64-latest.err | 2 +- ...manual-efi-qemuvars-q35.x86_64-latest.args | 34 +++++++++++++++++++ ...-manual-efi-qemuvars-q35.x86_64-latest.err | 1 - ...-manual-efi-qemuvars-q35.x86_64-latest.xml | 2 +- tests/qemuxmlconftest.c | 2 +- 6 files changed, 39 insertions(+), 5 deletions(-) create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.= x86_64-latest.args delete mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.= x86_64-latest.err diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index ce90f95d0a..e45081eadb 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -2145,7 +2145,8 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, loader->nvram && loader->nvram->format && loader->nvram->format !=3D VIR_STORAGE_FILE_RAW && - loader->nvram->format !=3D VIR_STORAGE_FILE_QCOW2) { + loader->nvram->format !=3D VIR_STORAGE_FILE_QCOW2 && + loader->nvram->format !=3D VIR_STORAGE_FILE_JSON) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported nvram format '%1$s'"), virStorageFileFormatTypeToString(loader->nvram->for= mat)); diff --git a/tests/qemuxmlconfdata/firmware-auto-efi-format-nvram-json.x86_= 64-latest.err b/tests/qemuxmlconfdata/firmware-auto-efi-format-nvram-json.x= 86_64-latest.err index e5f67f8d09..3edb2b3451 100644 --- a/tests/qemuxmlconfdata/firmware-auto-efi-format-nvram-json.x86_64-late= st.err +++ b/tests/qemuxmlconfdata/firmware-auto-efi-format-nvram-json.x86_64-late= st.err @@ -1 +1 @@ -unsupported configuration: Unsupported nvram format 'json' +operation failed: Unable to find 'efi' firmware that is compatible with th= e current configuration diff --git a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-= latest.args b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64= -latest.args new file mode 100644 index 0000000000..ffc3d3c86d --- /dev/null +++ b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-latest.= args @@ -0,0 +1,34 @@ +LC_ALL=3DC \ +PATH=3D/bin \ +HOME=3D/var/lib/libvirt/qemu/domain--1-guest \ +USER=3Dtest \ +LOGNAME=3Dtest \ +XDG_DATA_HOME=3D/var/lib/libvirt/qemu/domain--1-guest/.local/share \ +XDG_CACHE_HOME=3D/var/lib/libvirt/qemu/domain--1-guest/.cache \ +XDG_CONFIG_HOME=3D/var/lib/libvirt/qemu/domain--1-guest/.config \ +/usr/bin/qemu-system-x86_64 \ +-name guest=3Dguest,debug-threads=3Don \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/va= r/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \ +-machine pc-q35-10.0,usb=3Doff,dump-guest-core=3Doff,memory-backend=3Dpc.r= am,acpi=3Don \ +-accel tcg \ +-cpu qemu64 \ +-bios /usr/share/edk2/ovmf/OVMF.qemuvars.fd \ +-m size=3D1048576k \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}= ' \ +-overcommit mem-lock=3Doff \ +-smp 1,sockets=3D1,cores=3D1,threads=3D1 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ +-display none \ +-no-user-config \ +-nodefaults \ +-chardev socket,id=3Dcharmonitor,fd=3D1729,server=3Don,wait=3Doff \ +-mon chardev=3Dcharmonitor,id=3Dmonitor,mode=3Dcontrol \ +-rtc base=3Dutc \ +-no-shutdown \ +-boot strict=3Don \ +-audiodev '{"id":"audio1","driver":"none"}' \ +-global ICH9-LPC.noreboot=3Doff \ +-watchdog-action reset \ +-sandbox on,obsolete=3Ddeny,elevateprivileges=3Ddeny,spawn=3Ddeny,resource= control=3Ddeny \ +-msg timestamp=3Don diff --git a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-= latest.err b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-= latest.err deleted file mode 100644 index e5f67f8d09..0000000000 --- a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-latest.= err +++ /dev/null @@ -1 +0,0 @@ -unsupported configuration: Unsupported nvram format 'json' diff --git a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-= latest.xml b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-= latest.xml index a16c404eaf..16cdac6c51 100644 --- a/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-latest.= xml +++ b/tests/qemuxmlconfdata/firmware-manual-efi-qemuvars-q35.x86_64-latest.= xml @@ -6,7 +6,7 @@ 1 hvm - /usr/share/edk2/ovmf/OVMF.qemuvars.fd + /usr/share/edk2/ovmf/OVMF.qemuvars= .fd /path/to/guest.json diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 4934afd02d..886e676d9e 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -1560,7 +1560,7 @@ mymain(void) ARG_CAPS_VARIANT, "+inteltdx", ARG_END); =20 - DO_TEST_CAPS_LATEST_FAILURE("firmware-manual-efi-qemuvars-q35"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-qemuvars-q35"); DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR("firmware-manual-efi-qemuvars-aar= ch64", "aarch64"); DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-qemuvars-nvram-ne= twork-nbd"); =20 --=20 2.52.0