From 47d34ffb26b9589fb6fcd8f0b24d5260bd10b1b1 Mon Sep 17 00:00:00 2001 From: Andrea Bolognani Date: Mon, 8 Jul 2024 14:19:43 +0200 Subject: [PATCH] qemu: ROM firmware images are always readonly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit By definition. Accordingly, filter them out when looking for a read/write image. Signed-off-by: Andrea Bolognani Reviewed-by: Ján Tomko --- src/qemu/qemu_firmware.c | 5 +++ .../firmware-auto-efi-rw.x86_64-latest.args | 34 ------------------- .../firmware-auto-efi-rw.x86_64-latest.err | 1 + .../firmware-auto-efi-rw.x86_64-latest.xml | 6 +--- tests/qemuxmlconftest.c | 2 +- 5 files changed, 8 insertions(+), 40 deletions(-) delete mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.args create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.err diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index a0b13f76b8..08ca99e1ac 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1339,6 +1339,11 @@ qemuFirmwareMatchDomain(const virDomainDef *def, VIR_DEBUG("Discarding rom loader"); return false; } + + if (loader && loader->readonly == VIR_TRISTATE_BOOL_NO) { + VIR_DEBUG("Discarding readonly loader"); + return false; + } } if (def->sec) { diff --git a/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.args b/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.args deleted file mode 100644 index 753ad2d4b5..0000000000 --- a/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.args +++ /dev/null @@ -1,34 +0,0 @@ -LC_ALL=C \ -PATH=/bin \ -HOME=/var/lib/libvirt/qemu/domain--1-guest \ -USER=test \ -LOGNAME=test \ -XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-guest/.local/share \ -XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-guest/.cache \ -XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-guest/.config \ -/usr/bin/qemu-system-x86_64 \ --name guest=guest,debug-threads=on \ --S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain--1-guest/master-key.aes"}' \ --machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,acpi=on \ --accel kvm \ --cpu qemu64 \ --bios /usr/share/edk2/ovmf/OVMF.inteltdx.secboot.fd \ --m size=1048576k \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ --overcommit mem-lock=off \ --smp 1,sockets=1,cores=1,threads=1 \ --uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ --display none \ --no-user-config \ --nodefaults \ --chardev socket,id=charmonitor,fd=1729,server=on,wait=off \ --mon chardev=charmonitor,id=monitor,mode=control \ --rtc base=utc \ --no-shutdown \ --boot strict=on \ --audiodev '{"id":"audio1","driver":"none"}' \ --global ICH9-LPC.noreboot=off \ --watchdog-action reset \ --sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ --msg timestamp=on diff --git a/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.err b/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.err new file mode 100644 index 0000000000..3edb2b3451 --- /dev/null +++ b/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.err @@ -0,0 +1 @@ +operation failed: Unable to find 'efi' firmware that is compatible with the current configuration diff --git a/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.xml b/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.xml index fe05e33b69..c2d0c33a0b 100644 --- a/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.xml +++ b/tests/qemuxmlconfdata/firmware-auto-efi-rw.x86_64-latest.xml @@ -6,11 +6,7 @@ 1 hvm - - - - - /usr/share/edk2/ovmf/OVMF.inteltdx.secboot.fd + diff --git a/tests/qemuxmlconftest.c b/tests/qemuxmlconftest.c index 9856d19709..85f6d0f314 100644 --- a/tests/qemuxmlconftest.c +++ b/tests/qemuxmlconftest.c @@ -1422,7 +1422,7 @@ mymain(void) DO_TEST_CAPS_LATEST("firmware-auto-efi"); DO_TEST_CAPS_LATEST_ABI_UPDATE("firmware-auto-efi"); DO_TEST_CAPS_LATEST("firmware-auto-efi-stateless"); - DO_TEST_CAPS_LATEST("firmware-auto-efi-rw"); + DO_TEST_CAPS_LATEST_FAILURE("firmware-auto-efi-rw"); DO_TEST_CAPS_LATEST_FAILURE("firmware-auto-efi-rw-pflash"); DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-secure"); DO_TEST_CAPS_LATEST_ABI_UPDATE("firmware-auto-efi-loader-secure");