[libvirt PATCH 00/33] qemu: Move firmware selection to postparse and add support for QCOW2 firmware

Motivation for these changes can be found in the commit message for patch 20 ("qemu: Move firmware selection from startup to postparse") as well as [RHBZ#2161965]. Patches 01-17 are preparatory fixes/improvements/cleanups. Patches 19-20 move firmware selection from startup to postparse, and patches 21-22 clean up a bit after that change. Patch 20 in particular is significantly larger than I would have liked, but I haven't been able to come up with a way to split it while still preserving bisectability and making things clearer instead of complicating them. If anyone has ideas in this regard, please let me know! Patches 23-27 add support for choosing a firmware format, but are effectively no-op because formats other than raw are still rejected at this point. Patches 28-30 add support for QCOW2 format firmware in the QEMU driver. Patches 31-33 document the changes. [RHBZ#2161965] https://bugzilla.redhat.com/show_bug.cgi?id=2161965 Andrea Bolognani (33): docs: Fix documentation for loader.stateless attribute tests: Set nvramDir in qemuxml2xmltest tests: Rename firmware-manual-efi-rw* tests tests: Use x86_64 for all x86 firmware tests tests: Move firmware tests to CAPS_LATEST tests: Unify input files for firmware tests tests: Enable qemuxml2xml for more firmware tests tests: Add more firmware tests qemu: Introduce qemuDomainDefMachinePostParse() qemu: Introduce qemuDomainDefBootPostParse() conf: Introduce virDomainLoaderDefParseXMLLoader() conf: introduce virDomainLoaderDefNew() qemu: Add convenience local variables qemu: Only fill nvramTemplate for local sources qemu: Clear os.firmwareFeatures after autoselection qemu: Don't pick firmware that requires SMM when smm=off qemu: Don't pick firmware with unsupported format tests: Add descriptors for QCOW2 format firmware builds conf: Export virDomainDefOSValidate() qemu: Move firmware selection from startup to postparse qemu: Move qemuDomainNVRAMPathFormat() to qemu_firmware qemu: Introduce qemuFirmwareEnsureNVRAM() conf: Change handling for empty NVRAM path conf: Parse firmware format drivers: Reject unsupported firmware formats qemu: Filter firmwares based on format qemu: Propagate firmware format conf: Accept QCOW2 firmware format qemu: Add support for QCOW2 format firmware tests: Add more firmware tests docs: Document firmware format attribute news: Document changes to firmware autoselection news: Document support for QCOW2 format firmware NEWS.rst | 16 + docs/formatdomain.rst | 11 +- src/bhyve/bhyve_firmware.c | 9 +- src/conf/domain_conf.c | 123 ++++- src/conf/domain_conf.h | 2 + src/conf/domain_validate.c | 4 +- src/conf/domain_validate.h | 3 + src/conf/schemas/domaincommon.rng | 15 + src/libvirt_private.syms | 2 + src/libxl/libxl_conf.c | 9 +- src/libxl/xen_xl.c | 4 +- src/libxl/xen_xm.c | 2 +- src/qemu/qemu_domain.c | 113 +++-- src/qemu/qemu_domain.h | 5 - src/qemu/qemu_driver.c | 2 - src/qemu/qemu_firmware.c | 460 +++++++++++++----- src/qemu/qemu_firmware.h | 3 +- src/qemu/qemu_process.c | 33 +- .../share/qemu/firmware/65-ovmf-qcow2.json | 35 ++ .../share/qemu/firmware/66-aavmf-qcow2.json | 36 ++ tests/qemufirmwaretest.c | 11 +- .../firmware-auto-bios-not-stateless.xml | 4 +- .../firmware-auto-bios-nvram.xml | 6 +- ...are-auto-bios-stateless.x86_64-latest.args | 16 +- .../firmware-auto-bios-stateless.xml | 4 +- .../firmware-auto-bios.x86_64-latest.args | 16 +- tests/qemuxml2argvdata/firmware-auto-bios.xml | 4 +- ...mware-auto-efi-aarch64.aarch64-latest.args | 22 +- .../firmware-auto-efi-aarch64.xml | 4 +- ...ware-auto-efi-enrolled-keys-no-secboot.xml | 4 +- ...-auto-efi-enrolled-keys.x86_64-latest.args | 18 +- .../firmware-auto-efi-enrolled-keys.xml | 4 +- ...fi-format-loader-qcow2.x86_64-latest.args} | 24 +- ...firmware-auto-efi-format-loader-qcow2.xml} | 6 +- ...efi-format-loader-raw.aarch64-latest.args} | 5 +- ...> firmware-auto-efi-format-loader-raw.xml} | 5 +- ...auto-efi-format-mismatch.x86_64-latest.err | 1 + ... => firmware-auto-efi-format-mismatch.xml} | 7 +- ...vram-qcow2-network-nbd.x86_64-latest.args} | 22 +- ...to-efi-format-nvram-qcow2-network-nbd.xml} | 11 +- ...ormat-nvram-qcow2-path.x86_64-latest.args} | 24 +- ...ware-auto-efi-format-nvram-qcow2-path.xml} | 6 +- ...efi-format-nvram-qcow2.x86_64-latest.args} | 24 +- ... firmware-auto-efi-format-nvram-qcow2.xml} | 6 +- .../firmware-auto-efi-loader-insecure.xml | 4 +- .../firmware-auto-efi-loader-path.xml | 4 +- ...-auto-efi-loader-secure.x86_64-latest.args | 18 +- .../firmware-auto-efi-loader-secure.xml | 4 +- ...to-efi-no-enrolled-keys.x86_64-latest.args | 18 +- .../firmware-auto-efi-no-enrolled-keys.xml | 4 +- ...are-auto-efi-no-secboot.x86_64-latest.args | 18 +- .../firmware-auto-efi-no-secboot.xml | 4 +- ...re-auto-efi-nvram-file.x86_64-latest.args} | 13 +- ...5.xml => firmware-auto-efi-nvram-file.xml} | 9 +- ...fi-nvram-network-iscsi.x86_64-latest.args} | 16 +- ...firmware-auto-efi-nvram-network-iscsi.xml} | 9 +- ...-efi-nvram-network-nbd.x86_64-latest.args} | 16 +- ...> firmware-auto-efi-nvram-network-nbd.xml} | 9 +- ...firmware-auto-efi-nvram.x86_64-latest.args | 18 +- .../firmware-auto-efi-nvram.xml | 6 +- ...rmware-auto-efi-secboot.x86_64-latest.args | 18 +- .../firmware-auto-efi-secboot.xml | 4 +- ...mware-auto-efi-smm-off.x86_64-latest.args} | 17 +- ...-efi.xml => firmware-auto-efi-smm-off.xml} | 5 +- ...ware-auto-efi-stateless.x86_64-latest.args | 16 +- .../firmware-auto-efi-stateless.xml | 4 +- .../firmware-auto-efi.x86_64-latest.args | 18 +- tests/qemuxml2argvdata/firmware-auto-efi.xml | 4 +- ...nual-bios-not-stateless.x86_64-latest.err} | 0 .../firmware-manual-bios-not-stateless.xml | 8 +- .../firmware-manual-bios-stateless.args | 30 -- ...-manual-bios-stateless.x86_64-latest.args} | 12 +- .../firmware-manual-bios-stateless.xml | 8 +- .../firmware-manual-bios.args | 30 -- ...> firmware-manual-bios.x86_64-latest.args} | 12 +- .../qemuxml2argvdata/firmware-manual-bios.xml | 8 +- ...nual-efi-acpi-aarch64.aarch64-latest.args} | 11 +- .../firmware-manual-efi-acpi-aarch64.xml | 6 +- ...re-manual-efi-acpi-q35.x86_64-latest.args} | 11 +- .../firmware-manual-efi-acpi-q35.xml | 6 +- .../firmware-manual-efi-features.xml | 6 +- ...ware-manual-efi-no-path.x86_64-latest.err} | 0 .../firmware-manual-efi-no-path.xml | 6 +- ...al-efi-noacpi-aarch64.aarch64-latest.args} | 11 +- .../firmware-manual-efi-noacpi-aarch64.xml | 6 +- ...e-manual-efi-noacpi-q35.x86_64-latest.err} | 0 .../firmware-manual-efi-noacpi-q35.xml | 6 +- ...e-manual-efi-nvram-file.x86_64-latest.args | 18 +- .../firmware-manual-efi-nvram-file.xml | 8 +- ...efi-nvram-network-iscsi.x86_64-latest.args | 16 +- ...irmware-manual-efi-nvram-network-iscsi.xml | 6 +- ...l-efi-nvram-network-nbd.x86_64-latest.args | 16 +- .../firmware-manual-efi-nvram-network-nbd.xml | 6 +- .../firmware-manual-efi-nvram-stateless.xml | 8 +- ...re-manual-efi-nvram-template-stateless.xml | 6 +- ...nual-efi-nvram-template.x86_64-latest.args | 18 +- .../firmware-manual-efi-nvram-template.xml | 6 +- ...manual-efi-rw-implicit.x86_64-latest.args} | 18 +- ...ml => firmware-manual-efi-rw-implicit.xml} | 8 +- ...firmware-manual-efi-rw.x86_64-latest.args} | 18 +- ...bios-rw.xml => firmware-manual-efi-rw.xml} | 8 +- .../firmware-manual-efi-secure.args | 35 -- ...ware-manual-efi-secure.x86_64-latest.args} | 20 +- .../firmware-manual-efi-secure.xml | 8 +- ...re-manual-efi-stateless.x86_64-latest.args | 16 +- .../firmware-manual-efi-stateless.xml | 6 +- .../qemuxml2argvdata/firmware-manual-efi.args | 32 -- ...=> firmware-manual-efi.x86_64-latest.args} | 13 +- .../qemuxml2argvdata/firmware-manual-efi.xml | 8 +- ...ual-noefi-acpi-aarch64.aarch64-latest.err} | 0 .../firmware-manual-noefi-acpi-aarch64.xml | 4 +- ...-manual-noefi-acpi-q35.x86_64-latest.args} | 9 +- .../firmware-manual-noefi-acpi-q35.xml | 4 +- ...-noefi-noacpi-aarch64.aarch64-latest.args} | 9 +- .../firmware-manual-noefi-noacpi-aarch64.xml | 4 +- ...anual-noefi-noacpi-q35.x86_64-latest.args} | 9 +- .../firmware-manual-noefi-noacpi-q35.xml | 4 +- .../virtio-iommu-aarch64.aarch64-latest.args | 8 +- tests/qemuxml2argvtest.c | 51 +- .../aarch64-virt-graphics.aarch64-latest.xml | 2 +- .../aarch64-virt-headless.aarch64-latest.xml | 2 +- ...ware-auto-bios-stateless.x86_64-latest.xml | 10 +- .../firmware-auto-bios.x86_64-latest.xml | 9 +- ...rmware-auto-efi-aarch64.aarch64-latest.xml | 8 +- ...e-auto-efi-enrolled-keys.x86_64-latest.xml | 15 +- ...efi-format-loader-qcow2.x86_64-latest.xml} | 11 +- ...-efi-format-loader-raw.aarch64-latest.xml} | 8 +- ...nvram-qcow2-network-nbd.x86_64-latest.xml} | 10 +- ...format-nvram-qcow2-path.x86_64-latest.xml} | 11 +- ...-efi-format-nvram-qcow2.x86_64-latest.xml} | 11 +- ...e-auto-efi-loader-secure.x86_64-latest.xml | 12 +- ...uto-efi-no-enrolled-keys.x86_64-latest.xml | 13 +- ...ware-auto-efi-no-secboot.x86_64-latest.xml | 13 +- ...are-auto-efi-nvram-file.x86_64-latest.xml} | 10 +- ...efi-nvram-network-iscsi.x86_64-latest.xml} | 6 +- ...o-efi-nvram-network-nbd.x86_64-latest.xml} | 6 +- .../firmware-auto-efi-nvram.x86_64-latest.xml | 12 +- ...irmware-auto-efi-secboot.x86_64-latest.xml | 14 +- ...rmware-auto-efi-smm-off.x86_64-latest.xml} | 12 +- ...ware-auto-efi-stateless.x86_64-latest.xml} | 10 +- .../firmware-auto-efi.x86_64-latest.xml | 11 +- ...e-manual-bios-stateless.x86_64-latest.xml} | 11 +- ...=> firmware-manual-bios.x86_64-latest.xml} | 11 +- ...anual-efi-acpi-aarch64.aarch64-latest.xml} | 8 +- ...are-manual-efi-acpi-q35.x86_64-latest.xml} | 13 +- ...ual-efi-noacpi-aarch64.aarch64-latest.xml} | 9 +- ...re-manual-efi-nvram-file.x86_64-latest.xml | 10 +- ...-efi-nvram-network-iscsi.x86_64-latest.xml | 6 +- ...al-efi-nvram-network-nbd.x86_64-latest.xml | 6 +- ...nual-efi-nvram-template.x86_64-latest.xml} | 10 +- ...-manual-efi-rw-implicit.x86_64-latest.xml} | 11 +- ... firmware-manual-efi-rw.x86_64-latest.xml} | 11 +- ...mware-manual-efi-secure.x86_64-latest.xml} | 14 +- ...re-manual-efi-stateless.x86_64-latest.xml} | 11 +- ... => firmware-manual-efi.x86_64-latest.xml} | 11 +- ...e-manual-noefi-acpi-q35.x86_64-latest.xml} | 10 +- ...l-noefi-noacpi-aarch64.aarch64-latest.xml} | 7 +- ...manual-noefi-noacpi-q35.x86_64-latest.xml} | 13 +- .../virtio-iommu-aarch64.aarch64-latest.xml | 4 +- tests/qemuxml2xmltest.c | 32 +- 160 files changed, 1408 insertions(+), 990 deletions(-) create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/65-ovmf-qcow2.json create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/66-aavmf-qcow2.json copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-loader-qcow2.x86_64-latest.args} (61%) copy tests/qemuxml2argvdata/{firmware-auto-efi-stateless.xml => firmware-auto-efi-format-loader-qcow2.xml} (81%) copy tests/qemuxml2argvdata/{virtio-iommu-aarch64.aarch64-latest.args => firmware-auto-efi-format-loader-raw.aarch64-latest.args} (89%) copy tests/qemuxml2argvdata/{firmware-auto-efi-aarch64.xml => firmware-auto-efi-format-loader-raw.xml} (79%) create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-format-mismatch.xml} (75%) copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.args} (61%) copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.xml => firmware-auto-efi-format-nvram-qcow2-network-nbd.xml} (63%) copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args} (58%) copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-format-nvram-qcow2-path.xml} (76%) copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args} (61%) copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-secure.xml => firmware-auto-efi-format-nvram-qcow2.xml} (81%) copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-auto-efi-nvram-file.x86_64-latest.args} (63%) copy tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-q35.xml => firmware-auto-efi-nvram-file.xml} (60%) copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-iscsi.x86_64-latest.args => firmware-auto-efi-nvram-network-iscsi.x86_64-latest.args} (77%) copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-iscsi.xml => firmware-auto-efi-nvram-network-iscsi.xml} (73%) copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.args => firmware-auto-efi-nvram-network-nbd.x86_64-latest.args} (72%) copy tests/qemuxml2argvdata/{firmware-manual-efi-nvram-network-nbd.xml => firmware-auto-efi-nvram-network-nbd.xml} (67%) copy tests/qemuxml2argvdata/{virtio-iommu-aarch64.aarch64-latest.args => firmware-auto-efi-smm-off.x86_64-latest.args} (67%) copy tests/qemuxml2argvdata/{firmware-auto-efi.xml => firmware-auto-efi-smm-off.xml} (82%) rename tests/qemuxml2argvdata/{firmware-manual-bios-not-stateless.err => firmware-manual-bios-not-stateless.x86_64-latest.err} (100%) delete mode 100644 tests/qemuxml2argvdata/firmware-manual-bios-stateless.args copy tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-bios-stateless.x86_64-latest.args} (60%) delete mode 100644 tests/qemuxml2argvdata/firmware-manual-bios.args copy tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-bios.x86_64-latest.args} (60%) rename tests/qemuxml2argvdata/{firmware-manual-efi-acpi-aarch64.args => firmware-manual-efi-acpi-aarch64.aarch64-latest.args} (62%) copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-manual-efi-acpi-q35.x86_64-latest.args} (64%) rename tests/qemuxml2argvdata/{firmware-manual-efi-no-path.err => firmware-manual-efi-no-path.x86_64-latest.err} (100%) rename tests/qemuxml2argvdata/{firmware-manual-efi-noacpi-aarch64.args => firmware-manual-efi-noacpi-aarch64.aarch64-latest.args} (62%) rename tests/qemuxml2argvdata/{firmware-manual-efi-noacpi-q35.err => firmware-manual-efi-noacpi-q35.x86_64-latest.err} (100%) rename tests/qemuxml2argvdata/{firmware-manual-bios-rw.x86_64-latest.args => firmware-manual-efi-rw-implicit.x86_64-latest.args} (57%) rename tests/qemuxml2argvdata/{firmware-manual-bios-rw-implicit.xml => firmware-manual-efi-rw-implicit.xml} (60%) rename tests/qemuxml2argvdata/{firmware-manual-bios-rw-implicit.x86_64-latest.args => firmware-manual-efi-rw.x86_64-latest.args} (57%) rename tests/qemuxml2argvdata/{firmware-manual-bios-rw.xml => firmware-manual-efi-rw.xml} (59%) delete mode 100644 tests/qemuxml2argvdata/firmware-manual-efi-secure.args copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.x86_64-latest.args => firmware-manual-efi-secure.x86_64-latest.args} (70%) delete mode 100644 tests/qemuxml2argvdata/firmware-manual-efi.args rename tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-manual-efi.x86_64-latest.args} (63%) rename tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-aarch64.err => firmware-manual-noefi-acpi-aarch64.aarch64-latest.err} (100%) rename tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-q35.args => firmware-manual-noefi-acpi-q35.x86_64-latest.args} (63%) rename tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-aarch64.args => firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args} (60%) rename tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-noefi-noacpi-q35.x86_64-latest.args} (64%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-loader-qcow2.x86_64-latest.xml} (74%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-auto-efi-format-loader-raw.aarch64-latest.xml} (74%) copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.xml} (76%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.xml} (75%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-format-nvram-qcow2.x86_64-latest.xml} (74%) copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-auto-efi-nvram-file.x86_64-latest.xml} (78%) copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-iscsi.x86_64-latest.xml => firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml} (89%) copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml => firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml} (88%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-auto-efi-smm-off.x86_64-latest.xml} (75%) copy tests/qemuxml2xmloutdata/{firmware-auto-bios-stateless.x86_64-latest.xml => firmware-auto-efi-stateless.x86_64-latest.xml} (82%) rename tests/qemuxml2xmloutdata/{firmware-manual-bios-stateless.xml => firmware-manual-bios-stateless.x86_64-latest.xml} (69%) rename tests/qemuxml2xmloutdata/{firmware-manual-bios.xml => firmware-manual-bios.x86_64-latest.xml} (69%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-efi-acpi-aarch64.aarch64-latest.xml} (76%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-manual-efi-acpi-q35.x86_64-latest.xml} (76%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml} (76%) copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-nvram-template.x86_64-latest.xml} (78%) copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-rw-implicit.x86_64-latest.xml} (72%) copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-rw.x86_64-latest.xml} (72%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-secure.x86_64-latest.xml => firmware-manual-efi-secure.x86_64-latest.xml} (73%) copy tests/qemuxml2xmloutdata/{firmware-manual-efi-nvram-file.x86_64-latest.xml => firmware-manual-efi-stateless.x86_64-latest.xml} (72%) rename tests/qemuxml2xmloutdata/{firmware-manual-efi.xml => firmware-manual-efi.x86_64-latest.xml} (70%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi.x86_64-latest.xml => firmware-manual-noefi-acpi-q35.x86_64-latest.xml} (86%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-noefi-noacpi-aarch64.aarch64-latest.xml} (88%) copy tests/qemuxml2xmloutdata/{firmware-auto-efi.x86_64-latest.xml => firmware-manual-noefi-noacpi-q35.x86_64-latest.xml} (83%) -- 2.39.1

It works exactly the other way around. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- docs/formatdomain.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 36c6d87907..8407bab1ba 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -255,7 +255,7 @@ harddisk, cdrom, network) determining where to obtain/find the boot image. is assumed that there will be a writable NVRAM available. In some cases, however, it may be desirable for the loader to run without any NVRAM, discarding any config changes on shutdown. The ``stateless`` flag (:since:`Since 8.6.0`) - can be used to control this behaviour, when set to ``no`` NVRAM will never + can be used to control this behaviour, when set to ``yes`` NVRAM will never be created. ``nvram`` Some UEFI firmwares may want to use a non-volatile memory to store some -- 2.39.1

We already do this in qemuxml2argvtest. Right now setting this doesn't change anything, but it will become relevant later. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- tests/qemuxml2xmltest.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index ae9716062d..907762190b 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -163,6 +163,9 @@ mymain(void) cfg = virQEMUDriverGetConfig(&driver); driver.privileged = true; + VIR_FREE(cfg->nvramDir); + cfg->nvramDir = g_strdup("/var/lib/libvirt/qemu/nvram"); + if (!(conn = virGetConnect())) goto cleanup; -- 2.39.1

These test cases deal with EFI, not BIOS. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- ...rgs => firmware-manual-efi-rw-implicit.x86_64-latest.args} | 0 ...os-rw-implicit.xml => firmware-manual-efi-rw-implicit.xml} | 0 ...-latest.args => firmware-manual-efi-rw.x86_64-latest.args} | 0 ...firmware-manual-bios-rw.xml => firmware-manual-efi-rw.xml} | 0 tests/qemuxml2argvtest.c | 4 ++-- 5 files changed, 2 insertions(+), 2 deletions(-) rename tests/qemuxml2argvdata/{firmware-manual-bios-rw-implicit.x86_64-latest.args => firmware-manual-efi-rw-implicit.x86_64-latest.args} (100%) rename tests/qemuxml2argvdata/{firmware-manual-bios-rw-implicit.xml => firmware-manual-efi-rw-implicit.xml} (100%) rename tests/qemuxml2argvdata/{firmware-manual-bios-rw.x86_64-latest.args => firmware-manual-efi-rw.x86_64-latest.args} (100%) rename tests/qemuxml2argvdata/{firmware-manual-bios-rw.xml => firmware-manual-efi-rw.xml} (100%) diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-rw-implicit.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.x86_64-latest.args similarity index 100% rename from tests/qemuxml2argvdata/firmware-manual-bios-rw-implicit.x86_64-latest.args rename to tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.x86_64-latest.args diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-rw-implicit.xml b/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.xml similarity index 100% rename from tests/qemuxml2argvdata/firmware-manual-bios-rw-implicit.xml rename to tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.xml diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-rw.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-rw.x86_64-latest.args similarity index 100% rename from tests/qemuxml2argvdata/firmware-manual-bios-rw.x86_64-latest.args rename to tests/qemuxml2argvdata/firmware-manual-efi-rw.x86_64-latest.args diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-rw.xml b/tests/qemuxml2argvdata/firmware-manual-efi-rw.xml similarity index 100% rename from tests/qemuxml2argvdata/firmware-manual-bios-rw.xml rename to tests/qemuxml2argvdata/firmware-manual-efi-rw.xml diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index ae0afb6f1c..f8ea0b6d10 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1129,8 +1129,8 @@ mymain(void) DO_TEST_NOCAPS("firmware-manual-efi"); DO_TEST_PARSE_ERROR_NOCAPS("firmware-manual-efi-no-path"); DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-features"); - DO_TEST_CAPS_LATEST("firmware-manual-bios-rw"); - DO_TEST_CAPS_LATEST("firmware-manual-bios-rw-implicit"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-rw"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-rw-implicit"); DO_TEST("firmware-manual-efi-secure", QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, QEMU_CAPS_DEVICE_PCI_BRIDGE, -- 2.39.1

Most test cases are on 64-bit architectures already, but there are a couple of exceptions. Right now this works, but it will no longer fly after some upcoming changes. Prepare for those by switching away from 32-bit architectures. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml | 4 ++-- tests/qemuxml2argvdata/firmware-manual-bios-stateless.args | 2 +- tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml | 4 ++-- tests/qemuxml2argvdata/firmware-manual-bios.args | 2 +- tests/qemuxml2argvdata/firmware-manual-bios.xml | 4 ++-- tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.xml | 4 ++-- tests/qemuxml2xmloutdata/firmware-manual-bios.xml | 4 ++-- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml b/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml index b60878ca0b..6e5f87354a 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml @@ -4,11 +4,11 @@ <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <loader stateless='no'>/usr/share/seabios/bios.bin</loader> </os> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <controller type='usb' model='none'/> <memballoon model='none'/> </devices> diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.args b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.args index 4f2ac0c682..3aa4fa90fa 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.args +++ b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.args @@ -6,7 +6,7 @@ LOGNAME=test \ XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -/usr/bin/qemu-system-i386 \ +/usr/bin/qemu-system-x86_64 \ -name guest=test-bios,debug-threads=on \ -S \ -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-test-bios/master-key.aes \ diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml index 9d6f4e4c83..fa644af8b9 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml @@ -4,11 +4,11 @@ <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <loader stateless='yes'>/usr/share/seabios/bios.bin</loader> </os> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <controller type='usb' model='none'/> <memballoon model='none'/> </devices> diff --git a/tests/qemuxml2argvdata/firmware-manual-bios.args b/tests/qemuxml2argvdata/firmware-manual-bios.args index 4f2ac0c682..3aa4fa90fa 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios.args +++ b/tests/qemuxml2argvdata/firmware-manual-bios.args @@ -6,7 +6,7 @@ LOGNAME=test \ XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -/usr/bin/qemu-system-i386 \ +/usr/bin/qemu-system-x86_64 \ -name guest=test-bios,debug-threads=on \ -S \ -object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-test-bios/master-key.aes \ diff --git a/tests/qemuxml2argvdata/firmware-manual-bios.xml b/tests/qemuxml2argvdata/firmware-manual-bios.xml index 3e1946029c..f5c33bc306 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios.xml +++ b/tests/qemuxml2argvdata/firmware-manual-bios.xml @@ -4,11 +4,11 @@ <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <loader>/usr/share/seabios/bios.bin</loader> </os> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <controller type='usb' model='none'/> <memballoon model='none'/> </devices> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.xml b/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.xml index de5ecb96dc..2fb7b49a79 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.xml @@ -5,7 +5,7 @@ <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <loader type='rom' stateless='yes'>/usr/share/seabios/bios.bin</loader> <boot dev='hd'/> </os> @@ -14,7 +14,7 @@ <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <controller type='usb' index='0' model='none'/> <controller type='pci' index='0' model='pci-root'/> <input type='mouse' bus='ps2'/> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-bios.xml b/tests/qemuxml2xmloutdata/firmware-manual-bios.xml index 75bb6038ca..47432ac525 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-bios.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-bios.xml @@ -5,7 +5,7 @@ <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> - <type arch='i686' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc'>hvm</type> <loader type='rom'>/usr/share/seabios/bios.bin</loader> <boot dev='hd'/> </os> @@ -14,7 +14,7 @@ <on_reboot>restart</on_reboot> <on_crash>destroy</on_crash> <devices> - <emulator>/usr/bin/qemu-system-i386</emulator> + <emulator>/usr/bin/qemu-system-x86_64</emulator> <controller type='usb' index='0' model='none'/> <controller type='pci' index='0' model='pci-root'/> <input type='mouse' bus='ps2'/> -- 2.39.1

This is already the case for the vast majority, but a few are using explicit capabilities lists. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- ...nual-bios-not-stateless.x86_64-latest.err} | 0 ...-manual-bios-stateless.x86_64-latest.args} | 7 ++-- ...> firmware-manual-bios.x86_64-latest.args} | 7 ++-- ...nual-efi-acpi-aarch64.aarch64-latest.args} | 7 ++-- ...re-manual-efi-acpi-q35.x86_64-latest.args} | 7 ++-- ...ware-manual-efi-no-path.x86_64-latest.err} | 0 ...al-efi-noacpi-aarch64.aarch64-latest.args} | 7 ++-- ...e-manual-efi-noacpi-q35.x86_64-latest.err} | 0 ...ware-manual-efi-secure.x86_64-latest.args} | 7 ++-- ...=> firmware-manual-efi.x86_64-latest.args} | 7 ++-- ...ual-noefi-acpi-aarch64.aarch64-latest.err} | 0 ...-manual-noefi-acpi-q35.x86_64-latest.args} | 7 ++-- ...-noefi-noacpi-aarch64.aarch64-latest.args} | 7 ++-- ...anual-noefi-noacpi-q35.x86_64-latest.args} | 7 ++-- tests/qemuxml2argvtest.c | 36 ++++++++----------- ...e-manual-bios-stateless.x86_64-latest.xml} | 3 ++ ...=> firmware-manual-bios.x86_64-latest.xml} | 3 ++ ... => firmware-manual-efi.x86_64-latest.xml} | 3 ++ tests/qemuxml2xmltest.c | 6 ++-- 19 files changed, 76 insertions(+), 45 deletions(-) rename tests/qemuxml2argvdata/{firmware-manual-bios-not-stateless.err => firmware-manual-bios-not-stateless.x86_64-latest.err} (100%) rename tests/qemuxml2argvdata/{firmware-manual-bios-stateless.args => firmware-manual-bios-stateless.x86_64-latest.args} (68%) rename tests/qemuxml2argvdata/{firmware-manual-bios.args => firmware-manual-bios.x86_64-latest.args} (68%) rename tests/qemuxml2argvdata/{firmware-manual-efi-acpi-aarch64.args => firmware-manual-efi-acpi-aarch64.aarch64-latest.args} (73%) rename tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.args => firmware-manual-efi-acpi-q35.x86_64-latest.args} (75%) rename tests/qemuxml2argvdata/{firmware-manual-efi-no-path.err => firmware-manual-efi-no-path.x86_64-latest.err} (100%) rename tests/qemuxml2argvdata/{firmware-manual-efi-noacpi-aarch64.args => firmware-manual-efi-noacpi-aarch64.aarch64-latest.args} (73%) rename tests/qemuxml2argvdata/{firmware-manual-efi-noacpi-q35.err => firmware-manual-efi-noacpi-q35.x86_64-latest.err} (100%) rename tests/qemuxml2argvdata/{firmware-manual-efi-secure.args => firmware-manual-efi-secure.x86_64-latest.args} (76%) rename tests/qemuxml2argvdata/{firmware-manual-efi.args => firmware-manual-efi.x86_64-latest.args} (75%) rename tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-aarch64.err => firmware-manual-noefi-acpi-aarch64.aarch64-latest.err} (100%) rename tests/qemuxml2argvdata/{firmware-manual-noefi-acpi-q35.args => firmware-manual-noefi-acpi-q35.x86_64-latest.args} (68%) rename tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-aarch64.args => firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args} (65%) rename tests/qemuxml2argvdata/{firmware-manual-noefi-noacpi-q35.args => firmware-manual-noefi-noacpi-q35.x86_64-latest.args} (68%) rename tests/qemuxml2xmloutdata/{firmware-manual-bios-stateless.xml => firmware-manual-bios-stateless.x86_64-latest.xml} (89%) rename tests/qemuxml2xmloutdata/{firmware-manual-bios.xml => firmware-manual-bios.x86_64-latest.xml} (89%) rename tests/qemuxml2xmloutdata/{firmware-manual-efi.xml => firmware-manual-efi.x86_64-latest.xml} (90%) diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.err b/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.x86_64-latest.err similarity index 100% rename from tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.err rename to tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.x86_64-latest.err diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.args b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.x86_64-latest.args similarity index 68% rename from tests/qemuxml2argvdata/firmware-manual-bios-stateless.args rename to tests/qemuxml2argvdata/firmware-manual-bios-stateless.x86_64-latest.args index 3aa4fa90fa..20953097ef 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.args +++ b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.x86_64-latest.args @@ -9,11 +9,13 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ /usr/bin/qemu-system-x86_64 \ -name guest=test-bios,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-test-bios/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -bios /usr/share/seabios/bios.bin \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ @@ -27,4 +29,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -no-acpi \ -boot strict=on \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-manual-bios.args b/tests/qemuxml2argvdata/firmware-manual-bios.x86_64-latest.args similarity index 68% rename from tests/qemuxml2argvdata/firmware-manual-bios.args rename to tests/qemuxml2argvdata/firmware-manual-bios.x86_64-latest.args index 3aa4fa90fa..20953097ef 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios.args +++ b/tests/qemuxml2argvdata/firmware-manual-bios.x86_64-latest.args @@ -9,11 +9,13 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ /usr/bin/qemu-system-x86_64 \ -name guest=test-bios,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-test-bios/master-key.aes \ --machine pc,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -bios /usr/share/seabios/bios.bin \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ @@ -27,4 +29,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -no-acpi \ -boot strict=on \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.args b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.args similarity index 73% rename from tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.args rename to tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.args index 411ac0ee7c..d6ed7b879c 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.args @@ -9,14 +9,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-aarch64 \ -name guest=guest,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-guest/master-key.aes \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine virt,usb=off,gic-version=2,dump-guest-core=off,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ +-cpu cortex-a15 \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ @@ -29,4 +31,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -no-shutdown \ -boot strict=on \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.args b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.x86_64-latest.args similarity index 75% rename from tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.args rename to tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.x86_64-latest.args index 641b7482ef..1d95deed9f 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.x86_64-latest.args @@ -9,14 +9,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ -name guest=guest,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-guest/master-key.aes \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine q35,usb=off,dump-guest-core=off,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ +-cpu qemu64 \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ @@ -31,4 +33,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -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/qemuxml2argvdata/firmware-manual-efi-no-path.err b/tests/qemuxml2argvdata/firmware-manual-efi-no-path.x86_64-latest.err similarity index 100% rename from tests/qemuxml2argvdata/firmware-manual-efi-no-path.err rename to tests/qemuxml2argvdata/firmware-manual-efi-no-path.x86_64-latest.err diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.args b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.args similarity index 73% rename from tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.args rename to tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.args index 3dbd36f066..3ecd28d85e 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.args @@ -9,14 +9,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-aarch64 \ -name guest=guest,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-guest/master-key.aes \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine virt,usb=off,gic-version=2,dump-guest-core=off,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ +-cpu cortex-a15 \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ @@ -30,4 +32,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -no-acpi \ -boot strict=on \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-q35.err b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-q35.x86_64-latest.err similarity index 100% rename from tests/qemuxml2argvdata/firmware-manual-efi-noacpi-q35.err rename to tests/qemuxml2argvdata/firmware-manual-efi-noacpi-q35.x86_64-latest.err diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-secure.args b/tests/qemuxml2argvdata/firmware-manual-efi-secure.x86_64-latest.args similarity index 76% rename from tests/qemuxml2argvdata/firmware-manual-efi-secure.args rename to tests/qemuxml2argvdata/firmware-manual-efi-secure.x86_64-latest.args index 7a879c3822..d394efedd9 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-secure.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-secure.x86_64-latest.args @@ -9,15 +9,17 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ /usr/bin/qemu-system-x86_64 \ -name guest=test-bios,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-test-bios/master-key.aes \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine q35,usb=off,smm=on,dump-guest-core=off,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine q35,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ +-cpu qemu64 \ -global driver=cfi.pflash01,property=secure,value=on \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ @@ -32,4 +34,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -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/qemuxml2argvdata/firmware-manual-efi.args b/tests/qemuxml2argvdata/firmware-manual-efi.x86_64-latest.args similarity index 75% rename from tests/qemuxml2argvdata/firmware-manual-efi.args rename to tests/qemuxml2argvdata/firmware-manual-efi.x86_64-latest.args index 1ee322bf08..9a0a941372 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi.x86_64-latest.args @@ -9,14 +9,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ /usr/bin/qemu-system-x86_64 \ -name guest=test-bios,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-test-bios/master-key.aes \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine pc,usb=off,dump-guest-core=off,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ +-cpu qemu64 \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ @@ -29,4 +31,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -no-shutdown \ -boot strict=on \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-aarch64.err b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-aarch64.aarch64-latest.err similarity index 100% rename from tests/qemuxml2argvdata/firmware-manual-noefi-acpi-aarch64.err rename to tests/qemuxml2argvdata/firmware-manual-noefi-acpi-aarch64.aarch64-latest.err diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.args b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.x86_64-latest.args similarity index 68% rename from tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.args rename to tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.x86_64-latest.args index 814396d3fc..18991fa32c 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.args +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.x86_64-latest.args @@ -9,10 +9,12 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ -name guest=guest,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-guest/master-key.aes \ --machine q35,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ @@ -27,4 +29,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -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/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.args b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args similarity index 65% rename from tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.args rename to tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args index b587534c49..fab02e14e2 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.args +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args @@ -9,10 +9,12 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-aarch64 \ -name guest=guest,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-guest/master-key.aes \ --machine virt,usb=off,gic-version=2,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram \ -accel tcg \ +-cpu cortex-a15 \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ @@ -26,4 +28,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -no-acpi \ -boot strict=on \ -audiodev '{"id":"audio1","driver":"none"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ -msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.args b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.args similarity index 68% rename from tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.args rename to tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.args index 4eff029173..089871f9fa 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.args +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.args @@ -9,10 +9,12 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ -name guest=guest,debug-threads=on \ -S \ --object secret,id=masterKey0,format=raw,file=/tmp/lib/domain--1-guest/master-key.aes \ --machine q35,usb=off,dump-guest-core=off \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ +-cpu qemu64 \ -m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ -uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ @@ -28,4 +30,5 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -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/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index f8ea0b6d10..885daff5f7 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1120,23 +1120,15 @@ mymain(void) DO_TEST_NOCAPS("reboot-timeout-disabled"); DO_TEST_NOCAPS("reboot-timeout-enabled"); - DO_TEST("firmware-manual-bios", - QEMU_CAPS_DEVICE_ISA_SERIAL); - DO_TEST("firmware-manual-bios-stateless", - QEMU_CAPS_DEVICE_ISA_SERIAL); - DO_TEST_PARSE_ERROR("firmware-manual-bios-not-stateless", - QEMU_CAPS_DEVICE_ISA_SERIAL); - DO_TEST_NOCAPS("firmware-manual-efi"); - DO_TEST_PARSE_ERROR_NOCAPS("firmware-manual-efi-no-path"); + DO_TEST_CAPS_LATEST("firmware-manual-bios"); + DO_TEST_CAPS_LATEST("firmware-manual-bios-stateless"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-bios-not-stateless"); + DO_TEST_CAPS_LATEST("firmware-manual-efi"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-no-path"); DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-features"); DO_TEST_CAPS_LATEST("firmware-manual-efi-rw"); DO_TEST_CAPS_LATEST("firmware-manual-efi-rw-implicit"); - DO_TEST("firmware-manual-efi-secure", - QEMU_CAPS_DEVICE_DMI_TO_PCI_BRIDGE, - QEMU_CAPS_DEVICE_PCI_BRIDGE, - QEMU_CAPS_DEVICE_IOH3420, - QEMU_CAPS_ICH9_AHCI, - QEMU_CAPS_VIRTIO_SCSI); + DO_TEST_CAPS_LATEST("firmware-manual-efi-secure"); DO_TEST_CAPS_LATEST("firmware-manual-efi-stateless"); DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-template"); DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-nvram-template-stateless"); @@ -1146,14 +1138,14 @@ mymain(void) DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-nvram-stateless"); /* Make sure all combinations of ACPI and UEFI behave as expected */ - DO_TEST_NOCAPS("firmware-manual-efi-acpi-aarch64"); - DO_TEST_NOCAPS("firmware-manual-efi-acpi-q35"); - DO_TEST_NOCAPS("firmware-manual-efi-noacpi-aarch64"); - DO_TEST_PARSE_ERROR_NOCAPS("firmware-manual-efi-noacpi-q35"); - DO_TEST_PARSE_ERROR_NOCAPS("firmware-manual-noefi-acpi-aarch64"); - DO_TEST_NOCAPS("firmware-manual-noefi-acpi-q35"); - DO_TEST_NOCAPS("firmware-manual-noefi-noacpi-aarch64"); - DO_TEST_NOCAPS("firmware-manual-noefi-noacpi-q35"); + DO_TEST_CAPS_ARCH_LATEST("firmware-manual-efi-acpi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-acpi-q35"); + DO_TEST_CAPS_ARCH_LATEST("firmware-manual-efi-noacpi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-manual-efi-noacpi-q35"); + DO_TEST_CAPS_ARCH_LATEST_PARSE_ERROR("firmware-manual-noefi-acpi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST("firmware-manual-noefi-acpi-q35"); + DO_TEST_CAPS_ARCH_LATEST("firmware-manual-noefi-noacpi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST("firmware-manual-noefi-noacpi-q35"); DO_TEST_CAPS_LATEST("firmware-auto-bios"); DO_TEST_CAPS_LATEST("firmware-auto-bios-stateless"); diff --git a/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.xml b/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.x86_64-latest.xml similarity index 89% rename from tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.xml rename to tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.x86_64-latest.xml index 2fb7b49a79..186df8c386 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.x86_64-latest.xml @@ -9,6 +9,9 @@ <loader type='rom' stateless='yes'>/usr/share/seabios/bios.bin</loader> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-bios.xml b/tests/qemuxml2xmloutdata/firmware-manual-bios.x86_64-latest.xml similarity index 89% rename from tests/qemuxml2xmloutdata/firmware-manual-bios.xml rename to tests/qemuxml2xmloutdata/firmware-manual-bios.x86_64-latest.xml index 47432ac525..98b7becb2c 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-bios.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-bios.x86_64-latest.xml @@ -9,6 +9,9 @@ <loader type='rom'>/usr/share/seabios/bios.bin</loader> <boot dev='hd'/> </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml similarity index 90% rename from tests/qemuxml2xmloutdata/firmware-manual-efi.xml rename to tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml index 7e6b3ad432..189f68cb1c 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml @@ -13,6 +13,9 @@ <features> <acpi/> </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> <clock offset='utc'/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index 907762190b..b242f1e9ac 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -937,9 +937,9 @@ mymain(void) DO_TEST("numatune-hmat", QEMU_CAPS_NUMA_HMAT); DO_TEST_CAPS_LATEST("numatune-memnode-restrictive-mode"); - DO_TEST_NOCAPS("firmware-manual-bios"); - DO_TEST_NOCAPS("firmware-manual-bios-stateless"); - DO_TEST_NOCAPS("firmware-manual-efi"); + DO_TEST_CAPS_LATEST("firmware-manual-bios"); + DO_TEST_CAPS_LATEST("firmware-manual-bios-stateless"); + DO_TEST_CAPS_LATEST("firmware-manual-efi"); DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-network-iscsi"); DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-network-nbd"); DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-file"); -- 2.39.1

Most of the differences, such as those in the domain name or amount of memory, are fairly harmless, but they still make it more cumbersome than necessary to directly compare different input (and output) files. More importantly, the use of unversioned machine types in some of the test cases results in the descriptor-based autoselection logic being effectively skipped, because the compatible machine types as listed in them are only the versioned variants. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- .../firmware-auto-bios-not-stateless.xml | 4 ++-- .../firmware-auto-bios-nvram.xml | 6 +++--- ...ware-auto-bios-stateless.x86_64-latest.args | 16 ++++++++-------- .../firmware-auto-bios-stateless.xml | 4 ++-- .../firmware-auto-bios.x86_64-latest.args | 16 ++++++++-------- tests/qemuxml2argvdata/firmware-auto-bios.xml | 4 ++-- ...rmware-auto-efi-aarch64.aarch64-latest.args | 16 ++++++++-------- .../firmware-auto-efi-aarch64.xml | 4 ++-- ...mware-auto-efi-enrolled-keys-no-secboot.xml | 4 ++-- ...e-auto-efi-enrolled-keys.x86_64-latest.args | 18 +++++++++--------- .../firmware-auto-efi-enrolled-keys.xml | 4 ++-- .../firmware-auto-efi-loader-insecure.xml | 4 ++-- .../firmware-auto-efi-loader-path.xml | 4 ++-- ...e-auto-efi-loader-secure.x86_64-latest.args | 18 +++++++++--------- .../firmware-auto-efi-loader-secure.xml | 4 ++-- ...uto-efi-no-enrolled-keys.x86_64-latest.args | 18 +++++++++--------- .../firmware-auto-efi-no-enrolled-keys.xml | 4 ++-- ...ware-auto-efi-no-secboot.x86_64-latest.args | 18 +++++++++--------- .../firmware-auto-efi-no-secboot.xml | 4 ++-- .../firmware-auto-efi-nvram.x86_64-latest.args | 18 +++++++++--------- .../firmware-auto-efi-nvram.xml | 6 +++--- ...irmware-auto-efi-secboot.x86_64-latest.args | 18 +++++++++--------- .../firmware-auto-efi-secboot.xml | 4 ++-- ...mware-auto-efi-stateless.x86_64-latest.args | 16 ++++++++-------- .../firmware-auto-efi-stateless.xml | 4 ++-- .../firmware-auto-efi.x86_64-latest.args | 18 +++++++++--------- tests/qemuxml2argvdata/firmware-auto-efi.xml | 4 ++-- .../firmware-manual-bios-not-stateless.xml | 6 +++--- ...re-manual-bios-stateless.x86_64-latest.args | 16 ++++++++-------- .../firmware-manual-bios-stateless.xml | 6 +++--- .../firmware-manual-bios.x86_64-latest.args | 16 ++++++++-------- .../qemuxml2argvdata/firmware-manual-bios.xml | 6 +++--- ...manual-efi-acpi-aarch64.aarch64-latest.args | 6 +++--- .../firmware-manual-efi-acpi-aarch64.xml | 6 +++--- ...ware-manual-efi-acpi-q35.x86_64-latest.args | 6 +++--- .../firmware-manual-efi-acpi-q35.xml | 6 +++--- .../firmware-manual-efi-features.xml | 6 +++--- .../firmware-manual-efi-no-path.xml | 6 +++--- ...nual-efi-noacpi-aarch64.aarch64-latest.args | 6 +++--- .../firmware-manual-efi-noacpi-aarch64.xml | 6 +++--- .../firmware-manual-efi-noacpi-q35.xml | 6 +++--- ...re-manual-efi-nvram-file.x86_64-latest.args | 18 +++++++++--------- .../firmware-manual-efi-nvram-file.xml | 8 ++++---- ...-efi-nvram-network-iscsi.x86_64-latest.args | 16 ++++++++-------- ...firmware-manual-efi-nvram-network-iscsi.xml | 6 +++--- ...al-efi-nvram-network-nbd.x86_64-latest.args | 16 ++++++++-------- .../firmware-manual-efi-nvram-network-nbd.xml | 6 +++--- .../firmware-manual-efi-nvram-stateless.xml | 8 ++++---- ...are-manual-efi-nvram-template-stateless.xml | 6 +++--- ...anual-efi-nvram-template.x86_64-latest.args | 18 +++++++++--------- .../firmware-manual-efi-nvram-template.xml | 6 +++--- ...e-manual-efi-rw-implicit.x86_64-latest.args | 18 +++++++++--------- .../firmware-manual-efi-rw-implicit.xml | 8 ++++---- .../firmware-manual-efi-rw.x86_64-latest.args | 18 +++++++++--------- .../firmware-manual-efi-rw.xml | 8 ++++---- ...rmware-manual-efi-secure.x86_64-latest.args | 18 +++++++++--------- .../firmware-manual-efi-secure.xml | 8 ++++---- ...are-manual-efi-stateless.x86_64-latest.args | 16 ++++++++-------- .../firmware-manual-efi-stateless.xml | 6 +++--- .../firmware-manual-efi.x86_64-latest.args | 18 +++++++++--------- tests/qemuxml2argvdata/firmware-manual-efi.xml | 8 ++++---- .../firmware-manual-noefi-acpi-aarch64.xml | 4 ++-- ...re-manual-noefi-acpi-q35.x86_64-latest.args | 4 ++-- .../firmware-manual-noefi-acpi-q35.xml | 4 ++-- ...al-noefi-noacpi-aarch64.aarch64-latest.args | 4 ++-- .../firmware-manual-noefi-noacpi-aarch64.xml | 4 ++-- ...-manual-noefi-noacpi-q35.x86_64-latest.args | 4 ++-- .../firmware-manual-noefi-noacpi-q35.xml | 4 ++-- ...mware-auto-bios-stateless.x86_64-latest.xml | 6 +++--- .../firmware-auto-bios.x86_64-latest.xml | 6 +++--- ...irmware-auto-efi-aarch64.aarch64-latest.xml | 4 ++-- ...re-auto-efi-enrolled-keys.x86_64-latest.xml | 6 +++--- ...re-auto-efi-loader-secure.x86_64-latest.xml | 6 +++--- ...auto-efi-no-enrolled-keys.x86_64-latest.xml | 6 +++--- ...mware-auto-efi-no-secboot.x86_64-latest.xml | 6 +++--- .../firmware-auto-efi-nvram.x86_64-latest.xml | 8 ++++---- ...firmware-auto-efi-secboot.x86_64-latest.xml | 6 +++--- .../firmware-auto-efi.x86_64-latest.xml | 6 +++--- ...are-manual-bios-stateless.x86_64-latest.xml | 6 +++--- .../firmware-manual-bios.x86_64-latest.xml | 6 +++--- ...are-manual-efi-nvram-file.x86_64-latest.xml | 8 ++++---- ...l-efi-nvram-network-iscsi.x86_64-latest.xml | 6 +++--- ...ual-efi-nvram-network-nbd.x86_64-latest.xml | 6 +++--- .../firmware-manual-efi.x86_64-latest.xml | 8 ++++---- 84 files changed, 362 insertions(+), 362 deletions(-) diff --git a/tests/qemuxml2argvdata/firmware-auto-bios-not-stateless.xml b/tests/qemuxml2argvdata/firmware-auto-bios-not-stateless.xml index b2c8fc1122..a1f21e9bb4 100644 --- a/tests/qemuxml2argvdata/firmware-auto-bios-not-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-auto-bios-not-stateless.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='bios'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-bios-nvram.xml b/tests/qemuxml2argvdata/firmware-auto-bios-nvram.xml index 6dad1e1f7f..c87debdb01 100644 --- a/tests/qemuxml2argvdata/firmware-auto-bios-nvram.xml +++ b/tests/qemuxml2argvdata/firmware-auto-bios-nvram.xml @@ -1,11 +1,11 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='bios'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <nvram>/path/to/fedora_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-auto-bios-stateless.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-bios-stateless.x86_64-latest.args index 8bef5a34f8..ae94fae47e 100644 --- a/tests/qemuxml2argvdata/firmware-auto-bios-stateless.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-bios-stateless.x86_64-latest.args @@ -1,21 +1,21 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel kvm \ -cpu qemu64 \ -bios /usr/share/seabios/bios-256k.bin \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-bios-stateless.xml b/tests/qemuxml2argvdata/firmware-auto-bios-stateless.xml index 4847951346..540f61a2b8 100644 --- a/tests/qemuxml2argvdata/firmware-auto-bios-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-auto-bios-stateless.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='bios'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-bios.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-bios.x86_64-latest.args index 8bef5a34f8..ae94fae47e 100644 --- a/tests/qemuxml2argvdata/firmware-auto-bios.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-bios.x86_64-latest.args @@ -1,21 +1,21 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel kvm \ -cpu qemu64 \ -bios /usr/share/seabios/bios-256k.bin \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-bios.xml b/tests/qemuxml2argvdata/firmware-auto-bios.xml index 06bb0bea9d..1911b40ae7 100644 --- a/tests/qemuxml2argvdata/firmware-auto-bios.xml +++ b/tests/qemuxml2argvdata/firmware-auto-bios.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='bios'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.aarch64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.aarch64-latest.args index b8959f89f4..05b27e84e8 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.aarch64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.aarch64-latest.args @@ -1,18 +1,18 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-aarch64test \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-aarch64test/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-aarch64test/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-aarch64test/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-aarch64 \ --name guest=aarch64test,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-aarch64test/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/aarch64test_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ @@ -21,7 +21,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-aarch64test/.config \ -object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.xml b/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.xml index 1e8dfffb5b..5c6c5192ba 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.xml @@ -1,6 +1,6 @@ <domain type='qemu'> - <name>aarch64test</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys-no-secboot.xml b/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys-no-secboot.xml index 722793684c..897da8e126 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys-no-secboot.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys-no-secboot.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys.x86_64-latest.args index 966697d860..e76fb1c38d 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys.x86_64-latest.args @@ -1,25 +1,25 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/fedora_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel kvm \ -cpu qemu64 \ -global driver=cfi.pflash01,property=secure,value=on \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys.xml b/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys.xml index b6ee05447f..01bba19a32 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-enrolled-keys.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-loader-insecure.xml b/tests/qemuxml2argvdata/firmware-auto-efi-loader-insecure.xml index 33bd7b0ac1..08ddfe3cfe 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-loader-insecure.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-loader-insecure.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-loader-path.xml b/tests/qemuxml2argvdata/firmware-auto-efi-loader-path.xml index a40f5e730c..5cf67730fd 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-loader-path.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-loader-path.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure.x86_64-latest.args index 966697d860..e76fb1c38d 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure.x86_64-latest.args @@ -1,25 +1,25 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/fedora_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel kvm \ -cpu qemu64 \ -global driver=cfi.pflash01,property=secure,value=on \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure.xml b/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure.xml index 34fa6d090e..e67e3a0844 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-loader-secure.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.args index b02460dbc6..1a6966abe7 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.args @@ -1,24 +1,24 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/fedora_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel kvm \ -cpu qemu64 \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-no-enrolled-keys.xml b/tests/qemuxml2argvdata/firmware-auto-efi-no-enrolled-keys.xml index e9717000a3..019faa29b9 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-no-enrolled-keys.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-no-enrolled-keys.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-no-secboot.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-no-secboot.x86_64-latest.args index b02460dbc6..1a6966abe7 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-no-secboot.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-no-secboot.x86_64-latest.args @@ -1,24 +1,24 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/fedora_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel kvm \ -cpu qemu64 \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-no-secboot.xml b/tests/qemuxml2argvdata/firmware-auto-efi-no-secboot.xml index 749d364ba5..7ddeb2d230 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-no-secboot.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-no-secboot.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-nvram.x86_64-latest.args index 0c131b529d..c848ea369a 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-nvram.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-nvram.x86_64-latest.args @@ -1,25 +1,25 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/path/to/fedora_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel kvm \ -cpu qemu64 \ -global driver=cfi.pflash01,property=secure,value=on \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram.xml b/tests/qemuxml2argvdata/firmware-auto-efi-nvram.xml index 17de8e380a..4ea37550e0 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-nvram.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-nvram.xml @@ -1,11 +1,11 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <nvram>/path/to/fedora_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-secboot.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-secboot.x86_64-latest.args index 966697d860..e76fb1c38d 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-secboot.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-secboot.x86_64-latest.args @@ -1,25 +1,25 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/fedora_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel kvm \ -cpu qemu64 \ -global driver=cfi.pflash01,property=secure,value=on \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-secboot.xml b/tests/qemuxml2argvdata/firmware-auto-efi-secboot.xml index 8a0b414f55..b2c18cdd54 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-secboot.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-secboot.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-stateless.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-stateless.x86_64-latest.args index c89612d7bf..3989b9fa6b 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-stateless.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-stateless.x86_64-latest.args @@ -1,22 +1,22 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF.sev.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format \ -accel kvm \ -cpu qemu64 \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-stateless.xml b/tests/qemuxml2argvdata/firmware-auto-efi-stateless.xml index 1be0f4fd96..575d756265 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi-stateless.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi.x86_64-latest.args index 966697d860..e76fb1c38d 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi.x86_64-latest.args @@ -1,25 +1,25 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-fedora \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-fedora/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-fedora/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-fedora/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=fedora,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-fedora/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/fedora_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ -machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel kvm \ -cpu qemu64 \ -global driver=cfi.pflash01,property=secure,value=on \ --m 8 \ --object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":8388608}' \ +-m 1024 \ +-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 \ diff --git a/tests/qemuxml2argvdata/firmware-auto-efi.xml b/tests/qemuxml2argvdata/firmware-auto-efi.xml index 55b9be1aec..8bf079a1c7 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi.xml +++ b/tests/qemuxml2argvdata/firmware-auto-efi.xml @@ -1,7 +1,7 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> + <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml b/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml index 6e5f87354a..8581e941f0 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-manual-bios-not-stateless.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader stateless='no'>/usr/share/seabios/bios.bin</loader> </os> <devices> diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.x86_64-latest.args index 20953097ef..4f7e0d8df5 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.x86_64-latest.args @@ -1,16 +1,16 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ -cpu qemu64 \ -bios /usr/share/seabios/bios.bin \ @@ -18,7 +18,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml index fa644af8b9..0d20ad256f 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-manual-bios-stateless.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader stateless='yes'>/usr/share/seabios/bios.bin</loader> </os> <devices> diff --git a/tests/qemuxml2argvdata/firmware-manual-bios.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-bios.x86_64-latest.args index 20953097ef..4f7e0d8df5 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-bios.x86_64-latest.args @@ -1,16 +1,16 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ -cpu qemu64 \ -bios /usr/share/seabios/bios.bin \ @@ -18,7 +18,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-bios.xml b/tests/qemuxml2argvdata/firmware-manual-bios.xml index f5c33bc306..0749f94c40 100644 --- a/tests/qemuxml2argvdata/firmware-manual-bios.xml +++ b/tests/qemuxml2argvdata/firmware-manual-bios.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader>/usr/share/seabios/bios.bin</loader> </os> <devices> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.args index d6ed7b879c..536b0894b2 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.args @@ -12,16 +12,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu cortex-a15 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.xml b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.xml index b18c5f55f0..4ccb2ac4a5 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-aarch64.xml @@ -1,12 +1,12 @@ <domain type='qemu'> <name>guest</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='aarch64' machine='virt'>hvm</type> + <type arch='aarch64' machine='virt-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.x86_64-latest.args index 1d95deed9f..f3706f0169 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.x86_64-latest.args @@ -12,16 +12,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.xml b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.xml index ea5289da2e..dd13bd27dd 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-acpi-q35.xml @@ -1,12 +1,12 @@ <domain type='qemu'> <name>guest</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='q35'>hvm</type> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-features.xml b/tests/qemuxml2argvdata/firmware-manual-efi-features.xml index 69cc71eb2a..8e5aff7559 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-features.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-features.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <firmware> <feature enabled='no' name='enrolled-keys'/> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-no-path.xml b/tests/qemuxml2argvdata/firmware-manual-efi-no-path.xml index 435f01dab4..66ad0804ae 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-no-path.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-no-path.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'/> </os> <features> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.args index 3ecd28d85e..4a2d43efdf 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.args @@ -12,16 +12,16 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu cortex-a15 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.xml b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.xml index 3799a5181c..7689d36fe2 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-aarch64.xml @@ -1,12 +1,12 @@ <domain type='qemu'> <name>guest</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='aarch64' machine='virt'>hvm</type> + <type arch='aarch64' machine='virt-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> </os> <devices> <emulator>/usr/bin/qemu-system-aarch64</emulator> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-q35.xml b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-q35.xml index 9b080fe31c..792c3315d4 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-q35.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-noacpi-q35.xml @@ -1,12 +1,12 @@ <domain type='qemu'> <name>guest</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='q35'>hvm</type> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> </os> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-file.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-file.x86_64-latest.args index d3ee7c0fee..ec950b8792 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-file.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-file.x86_64-latest.args @@ -1,27 +1,27 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-file.xml b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-file.xml index beed93adc1..46c20b2408 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-file.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-file.xml @@ -1,13 +1,13 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='file'> - <source file='/var/lib/libvirt/nvram/guest_VARS.fd'/> + <source file='/path/to/guest_VARS.fd'/> </nvram> </os> <features> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.args index 07f2180cd8..c4c50a7721 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.args @@ -1,28 +1,28 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -object '{"qom-type":"secret","id":"libvirt-pflash1-storage-auth-secret0","data":"9eao5F8qtkGt+seB1HYivWIxbtwUu6MQtg1zpj/oDtUsPr1q8wBYM91uEHCn6j/1","keyid":"masterKey0","iv":"AAECAwQFBgcICQoLDA0ODw==","format":"base64"}' \ -blockdev '{"driver":"iscsi","portal":"example.com:6000","target":"iqn.2013-07.com.example:iscsi-nopool","lun":0,"transport":"tcp","user":"myname","password-secret":"libvirt-pflash1-storage-auth-secret0","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-iscsi.xml b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-iscsi.xml index efc60341ab..af925e7ce7 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-iscsi.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-iscsi.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='network'> <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool'> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.args index f2864f6086..431f2f30fd 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.args @@ -1,27 +1,27 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ -blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"bar","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-nbd.xml b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-nbd.xml index 60a963ca22..133c08e63d 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-nbd.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-network-nbd.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='network'> <source protocol='nbd' name='bar'> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-stateless.xml b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-stateless.xml index 717712e89b..4de3f30192 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-stateless.xml @@ -1,13 +1,13 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader stateless='yes' readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='file'> - <source file='/var/lib/libvirt/nvram/guest_VARS.fd'/> + <source file='/path/to/guest_VARS.fd'/> </nvram> </os> <features> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-stateless.xml b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-stateless.xml index a6d7079b78..e4f9d04aed 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template-stateless.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader stateless='yes' readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram template="/usr/share/OVMF/OVMF_VARS.fd"/> </os> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template.x86_64-latest.args index 1d24a734c6..8cd1b5750a 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template.x86_64-latest.args @@ -1,27 +1,27 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/test-bios_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template.xml b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template.xml index 0d7e43a26c..647c6166cf 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-nvram-template.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram template="/usr/share/OVMF/OVMF_VARS.fd"/> </os> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.x86_64-latest.args index 7a0d663f81..7a88cfe5fd 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.x86_64-latest.args @@ -1,25 +1,25 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/test-bios.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_BOTH.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":false,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.xml b/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.xml index 6279bf2eb4..87fd1317f4 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-rw-implicit.xml @@ -1,11 +1,11 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> - <loader type='pflash'>/var/lib/libvirt/qemu/nvram/test-bios.fd</loader> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader type='pflash'>/path/to/guest_BOTH.fd</loader> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-rw.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-rw.x86_64-latest.args index 7a0d663f81..7a88cfe5fd 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-rw.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-rw.x86_64-latest.args @@ -1,25 +1,25 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/test-bios.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_BOTH.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":false,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-rw.xml b/tests/qemuxml2argvdata/firmware-manual-efi-rw.xml index 1dc9432523..c98480c119 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-rw.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-rw.xml @@ -1,11 +1,11 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> - <loader readonly='no' type='pflash'>/var/lib/libvirt/qemu/nvram/test-bios.fd</loader> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader readonly='no' type='pflash'>/path/to/guest_BOTH.fd</loader> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-secure.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-secure.x86_64-latest.args index d394efedd9..b8c5708a7f 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-secure.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-secure.x86_64-latest.args @@ -1,20 +1,20 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.secboot.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine q35,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine pc-q35-4.0,usb=off,smm=on,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu qemu64 \ -global driver=cfi.pflash01,property=secure,value=on \ @@ -22,7 +22,7 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-secure.xml b/tests/qemuxml2argvdata/firmware-manual-efi-secure.xml index 090e37cecd..740b7968a8 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-secure.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-secure.xml @@ -1,12 +1,12 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='q35'>hvm</type> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-stateless.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi-stateless.x86_64-latest.args index e87c2d6638..2fca20dffd 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-stateless.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi-stateless.x86_64-latest.args @@ -1,25 +1,25 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi-stateless.xml b/tests/qemuxml2argvdata/firmware-manual-efi-stateless.xml index 6f2a4963b1..641c0f275f 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi-stateless.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi-stateless.xml @@ -1,10 +1,10 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash' stateless='yes'>/usr/share/OVMF/OVMF_CODE.fd</loader> </os> <features> diff --git a/tests/qemuxml2argvdata/firmware-manual-efi.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-efi.x86_64-latest.args index 9a0a941372..ec950b8792 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-efi.x86_64-latest.args @@ -1,27 +1,27 @@ LC_ALL=C \ PATH=/bin \ -HOME=/tmp/lib/domain--1-test-bios \ +HOME=/tmp/lib/domain--1-guest \ USER=test \ LOGNAME=test \ -XDG_DATA_HOME=/tmp/lib/domain--1-test-bios/.local/share \ -XDG_CACHE_HOME=/tmp/lib/domain--1-test-bios/.cache \ -XDG_CONFIG_HOME=/tmp/lib/domain--1-test-bios/.config \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ /usr/bin/qemu-system-x86_64 \ --name guest=test-bios,debug-threads=on \ +-name guest=guest,debug-threads=on \ -S \ --object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-test-bios/master-key.aes"}' \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ -blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/some/user/nvram/path/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ -blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ --machine pc,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 362d1fc1-df7d-193e-5c18-49a71bd1da66 \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-efi.xml b/tests/qemuxml2argvdata/firmware-manual-efi.xml index bbc4641da8..5bbb50764a 100644 --- a/tests/qemuxml2argvdata/firmware-manual-efi.xml +++ b/tests/qemuxml2argvdata/firmware-manual-efi.xml @@ -1,12 +1,12 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-aarch64.xml b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-aarch64.xml index 12052e2f43..6a9095634e 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-aarch64.xml +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-aarch64.xml @@ -1,10 +1,10 @@ <domain type='qemu'> <name>guest</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='aarch64' machine='virt'>hvm</type> + <type arch='aarch64' machine='virt-4.0'>hvm</type> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.x86_64-latest.args index 18991fa32c..1caf8cd150 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.x86_64-latest.args @@ -10,14 +10,14 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -name guest=guest,debug-threads=on \ -S \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ --machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram \ +-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.xml b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.xml index 2b3ae78169..cd619db5a6 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.xml +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-acpi-q35.xml @@ -1,10 +1,10 @@ <domain type='qemu'> <name>guest</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='q35'>hvm</type> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> </os> <features> <acpi/> diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args index fab02e14e2..677d610e33 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.args @@ -10,14 +10,14 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -name guest=guest,debug-threads=on \ -S \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ --machine virt,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram \ +-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram \ -accel tcg \ -cpu cortex-a15 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"mach-virt.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.xml b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.xml index 72d7bf2ed5..e96c83550c 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.xml +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-aarch64.xml @@ -1,10 +1,10 @@ <domain type='qemu'> <name>guest</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='aarch64' machine='virt'>hvm</type> + <type arch='aarch64' machine='virt-4.0'>hvm</type> </os> <devices> <emulator>/usr/bin/qemu-system-aarch64</emulator> diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.args index 089871f9fa..783abd6983 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.args +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.args @@ -10,14 +10,14 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -name guest=guest,debug-threads=on \ -S \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ --machine q35,usb=off,dump-guest-core=off,memory-backend=pc.ram \ +-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram \ -accel tcg \ -cpu qemu64 \ -m 1024 \ -object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":1073741824}' \ -overcommit mem-lock=off \ -smp 1,sockets=1,cores=1,threads=1 \ --uuid 496d7ea8-9739-544b-4ebd-ef08be936e8b \ +-uuid 63840878-0deb-4095-97e6-fc444d9bc9fa \ -display none \ -no-user-config \ -nodefaults \ diff --git a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.xml b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.xml index 2150c33b1c..a5cfd48a34 100644 --- a/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.xml +++ b/tests/qemuxml2argvdata/firmware-manual-noefi-noacpi-q35.xml @@ -1,10 +1,10 @@ <domain type='qemu'> <name>guest</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='q35'>hvm</type> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> </os> <devices> <emulator>/usr/bin/qemu-system-x86_64</emulator> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml index 7609ded09a..9d42e210c3 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml @@ -1,8 +1,8 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='bios'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml index 3c48ff19c6..11f95f04eb 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml @@ -1,8 +1,8 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='bios'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml index a926869046..5f4432db36 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml @@ -1,6 +1,6 @@ <domain type='qemu'> - <name>aarch64test</name> - <uuid>496d7ea8-9739-544b-4ebd-ef08be936e8b</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-enrolled-keys.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-enrolled-keys.x86_64-latest.xml index e411c0e614..3923d1d4f2 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-enrolled-keys.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-enrolled-keys.x86_64-latest.xml @@ -1,8 +1,8 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml index 3ba6ec2b86..c655d81454 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml @@ -1,8 +1,8 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml index 58745a4b1a..326b1d5faf 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml @@ -1,8 +1,8 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml index 7625ef219a..9e8107cb4d 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml @@ -1,8 +1,8 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml index f6243bc43a..2090a770c6 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml @@ -1,12 +1,12 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <nvram>/path/to/fedora_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml index 1c66ca23a1..22a26554c8 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml @@ -1,8 +1,8 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml index b9b119fd21..72f2ea1321 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml @@ -1,8 +1,8 @@ <domain type='kvm'> - <name>fedora</name> + <name>guest</name> <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> - <memory unit='KiB'>8192</memory> - <currentMemory unit='KiB'>8192</currentMemory> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os firmware='efi'> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.x86_64-latest.xml index 186df8c386..5787482b36 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-bios-stateless.x86_64-latest.xml @@ -1,11 +1,11 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader type='rom' stateless='yes'>/usr/share/seabios/bios.bin</loader> <boot dev='hd'/> </os> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-bios.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-bios.x86_64-latest.xml index 98b7becb2c..56932d7fee 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-bios.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-bios.x86_64-latest.xml @@ -1,11 +1,11 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader type='rom'>/usr/share/seabios/bios.bin</loader> <boot dev='hd'/> </os> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml index b78cafecc4..482d7987f6 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml @@ -1,14 +1,14 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='file'> - <source file='/var/lib/libvirt/nvram/guest_VARS.fd'/> + <source file='/path/to/guest_VARS.fd'/> </nvram> <boot dev='hd'/> </os> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.xml index 16de5e7387..5a2e8715a0 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-iscsi.x86_64-latest.xml @@ -1,11 +1,11 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='network'> <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool'> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml index 1adbd9e60e..208257bb5b 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-network-nbd.x86_64-latest.xml @@ -1,11 +1,11 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='network'> <source protocol='nbd' name='bar'> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml index 189f68cb1c..97a9a6c5e6 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml @@ -1,13 +1,13 @@ <domain type='qemu'> - <name>test-bios</name> - <uuid>362d1fc1-df7d-193e-5c18-49a71bd1da66</uuid> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> <os> - <type arch='x86_64' machine='pc'>hvm</type> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram>/path/to/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> -- 2.39.1

Some of the test cases had only been added to the xml2argv test program and not to the xml2xml one. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- ...mware-auto-efi-stateless.x86_64-latest.xml | 35 ++++++++++++++++++ ...manual-efi-acpi-aarch64.aarch64-latest.xml | 31 ++++++++++++++++ ...ware-manual-efi-acpi-q35.x86_64-latest.xml | 36 ++++++++++++++++++ ...nual-efi-noacpi-aarch64.aarch64-latest.xml | 30 +++++++++++++++ ...anual-efi-nvram-template.x86_64-latest.xml | 32 ++++++++++++++++ ...e-manual-efi-rw-implicit.x86_64-latest.xml | 31 ++++++++++++++++ .../firmware-manual-efi-rw.x86_64-latest.xml | 31 ++++++++++++++++ ...rmware-manual-efi-secure.x86_64-latest.xml | 37 +++++++++++++++++++ ...are-manual-efi-stateless.x86_64-latest.xml | 31 ++++++++++++++++ ...re-manual-noefi-acpi-q35.x86_64-latest.xml | 34 +++++++++++++++++ ...al-noefi-noacpi-aarch64.aarch64-latest.xml | 28 ++++++++++++++ ...-manual-noefi-noacpi-q35.x86_64-latest.xml | 31 ++++++++++++++++ tests/qemuxml2xmltest.c | 13 +++++++ 13 files changed, 400 insertions(+) create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-efi-rw-implicit.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-efi-rw.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-efi-secure.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-efi-stateless.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-noefi-acpi-q35.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.xml diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml new file mode 100644 index 0000000000..143756dbff --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml @@ -0,0 +1,35 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader stateless='yes'/> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml new file mode 100644 index 0000000000..24e4de6fc6 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml @@ -0,0 +1,31 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='aarch64' machine='virt-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> + <nvram>/path/to/guest_VARS.fd</nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + <gic version='2'/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>cortex-a15</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pcie-root'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml new file mode 100644 index 0000000000..2a36c46737 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml @@ -0,0 +1,36 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <nvram>/path/to/guest_VARS.fd</nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml new file mode 100644 index 0000000000..414c1d6611 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml @@ -0,0 +1,30 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='aarch64' machine='virt-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> + <nvram>/path/to/guest_VARS.fd</nvram> + <boot dev='hd'/> + </os> + <features> + <gic version='2'/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>cortex-a15</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pcie-root'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template.x86_64-latest.xml new file mode 100644 index 0000000000..3b79af418a --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-template.x86_64-latest.xml @@ -0,0 +1,32 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-implicit.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-implicit.x86_64-latest.xml new file mode 100644 index 0000000000..3411e337e8 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-rw-implicit.x86_64-latest.xml @@ -0,0 +1,31 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader type='pflash'>/path/to/guest_BOTH.fd</loader> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-rw.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-rw.x86_64-latest.xml new file mode 100644 index 0000000000..94ceb88b49 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-rw.x86_64-latest.xml @@ -0,0 +1,31 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader readonly='no' type='pflash'>/path/to/guest_BOTH.fd</loader> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-secure.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-secure.x86_64-latest.xml new file mode 100644 index 0000000000..cd7de76034 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-secure.x86_64-latest.xml @@ -0,0 +1,37 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader> + <nvram>/path/to/guest_VARS.fd</nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + <smm state='on'/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-stateless.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-stateless.x86_64-latest.xml new file mode 100644 index 0000000000..cb29b373d2 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-stateless.x86_64-latest.xml @@ -0,0 +1,31 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader readonly='yes' type='pflash' stateless='yes'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-noefi-acpi-q35.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-noefi-acpi-q35.x86_64-latest.xml new file mode 100644 index 0000000000..813ebbe7bb --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-noefi-acpi-q35.x86_64-latest.xml @@ -0,0 +1,34 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.xml new file mode 100644 index 0000000000..5deb68d4f3 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-noefi-noacpi-aarch64.aarch64-latest.xml @@ -0,0 +1,28 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='aarch64' machine='virt-4.0'>hvm</type> + <boot dev='hd'/> + </os> + <features> + <gic version='2'/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>cortex-a15</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pcie-root'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.xml new file mode 100644 index 0000000000..13ada385ea --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-manual-noefi-noacpi-q35.x86_64-latest.xml @@ -0,0 +1,31 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <boot dev='hd'/> + </os> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index b242f1e9ac..dff890218c 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -940,13 +940,26 @@ mymain(void) DO_TEST_CAPS_LATEST("firmware-manual-bios"); DO_TEST_CAPS_LATEST("firmware-manual-bios-stateless"); DO_TEST_CAPS_LATEST("firmware-manual-efi"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-rw"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-rw-implicit"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-secure"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-stateless"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-template"); DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-network-iscsi"); DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-network-nbd"); DO_TEST_CAPS_LATEST("firmware-manual-efi-nvram-file"); + DO_TEST_CAPS_ARCH_LATEST("firmware-manual-efi-acpi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST("firmware-manual-efi-acpi-q35"); + DO_TEST_CAPS_ARCH_LATEST("firmware-manual-efi-noacpi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST("firmware-manual-noefi-acpi-q35"); + DO_TEST_CAPS_ARCH_LATEST("firmware-manual-noefi-noacpi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST("firmware-manual-noefi-noacpi-q35"); + DO_TEST_CAPS_LATEST("firmware-auto-bios"); DO_TEST_CAPS_LATEST("firmware-auto-bios-stateless"); DO_TEST_CAPS_LATEST("firmware-auto-efi"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-stateless"); DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram"); DO_TEST_CAPS_LATEST("firmware-auto-efi-loader-secure"); DO_TEST_CAPS_LATEST("firmware-auto-efi-secboot"); -- 2.39.1

These cover scenarios such as using the new, more verbose format of the <nvram> element to point to a local path, mixing firmware autoselection with non-local NVRAM files, and explicitly disabling SMM when using firmware autoselection. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- ...are-auto-efi-nvram-file.x86_64-latest.args | 35 +++++++++++++++++ .../firmware-auto-efi-nvram-file.xml | 20 ++++++++++ ...efi-nvram-network-iscsi.x86_64-latest.args | 36 ++++++++++++++++++ .../firmware-auto-efi-nvram-network-iscsi.xml | 25 ++++++++++++ ...o-efi-nvram-network-nbd.x86_64-latest.args | 35 +++++++++++++++++ .../firmware-auto-efi-nvram-network-nbd.xml | 22 +++++++++++ ...irmware-auto-efi-smm-off.x86_64-latest.err | 1 + .../firmware-auto-efi-smm-off.xml | 18 +++++++++ tests/qemuxml2argvtest.c | 4 ++ ...ware-auto-efi-nvram-file.x86_64-latest.xml | 33 ++++++++++++++++ ...-efi-nvram-network-iscsi.x86_64-latest.xml | 38 +++++++++++++++++++ ...to-efi-nvram-network-nbd.x86_64-latest.xml | 35 +++++++++++++++++ ...irmware-auto-efi-smm-off.x86_64-latest.xml | 35 +++++++++++++++++ tests/qemuxml2xmltest.c | 4 ++ 14 files changed, 341 insertions(+) create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-nvram-file.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-nvram-file.xml create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-iscsi.xml create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-nbd.xml create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.err create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-smm-off.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram-file.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-file.x86_64-latest.args new file mode 100644 index 0000000000..ec950b8792 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-file.x86_64-latest.args @@ -0,0 +1,35 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel tcg \ +-cpu qemu64 \ +-m 1024 \ +-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"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram-file.xml b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-file.xml new file mode 100644 index 0000000000..8353cc3e82 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-file.xml @@ -0,0 +1,20 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <nvram type='file'> + <source file='/path/to/guest_VARS.fd'/> + </nvram> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.args new file mode 100644 index 0000000000..c4c50a7721 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.args @@ -0,0 +1,36 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ +-object '{"qom-type":"secret","id":"libvirt-pflash1-storage-auth-secret0","data":"9eao5F8qtkGt+seB1HYivWIxbtwUu6MQtg1zpj/oDtUsPr1q8wBYM91uEHCn6j/1","keyid":"masterKey0","iv":"AAECAwQFBgcICQoLDA0ODw==","format":"base64"}' \ +-blockdev '{"driver":"iscsi","portal":"example.com:6000","target":"iqn.2013-07.com.example:iscsi-nopool","lun":0,"transport":"tcp","user":"myname","password-secret":"libvirt-pflash1-storage-auth-secret0","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel tcg \ +-cpu qemu64 \ +-m 1024 \ +-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"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-iscsi.xml b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-iscsi.xml new file mode 100644 index 0000000000..c709f3e319 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-iscsi.xml @@ -0,0 +1,25 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <nvram type='network'> + <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool'> + <host name='example.com' port='6000'/> + <auth username='myname'> + <secret type='iscsi' usage='mycluster_myname'/> + </auth> + </source> + </nvram> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.args new file mode 100644 index 0000000000..431f2f30fd --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.args @@ -0,0 +1,35 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"bar","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel tcg \ +-cpu qemu64 \ +-m 1024 \ +-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"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-nbd.xml b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-nbd.xml new file mode 100644 index 0000000000..2a46819ef2 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-nvram-network-nbd.xml @@ -0,0 +1,22 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <nvram type='network'> + <source protocol='nbd' name='bar'> + <host name='example.org' port='6000'/> + </source> + </nvram> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.err new file mode 100644 index 0000000000..f4e2e13a15 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.err @@ -0,0 +1 @@ +Requested operation is not valid: domain has SMM turned off but chosen firmware requires it diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.xml b/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.xml new file mode 100644 index 0000000000..8e3d185efa --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.xml @@ -0,0 +1,18 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + </os> + <features> + <acpi/> + <smm state='off'/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 885daff5f7..c18958db86 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1162,7 +1162,11 @@ mymain(void) DO_TEST_CAPS_LATEST("firmware-auto-efi-enrolled-keys"); DO_TEST_CAPS_LATEST("firmware-auto-efi-no-enrolled-keys"); DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-auto-efi-enrolled-keys-no-secboot"); + DO_TEST_CAPS_LATEST_FAILURE("firmware-auto-efi-smm-off"); DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-file"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-nbd"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-iscsi"); DO_TEST_NOCAPS("clock-utc"); DO_TEST_NOCAPS("clock-localtime"); diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml new file mode 100644 index 0000000000..961e97472d --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml @@ -0,0 +1,33 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <nvram type='file'> + <source file='/path/to/guest_VARS.fd'/> + </nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml new file mode 100644 index 0000000000..446266fbf0 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml @@ -0,0 +1,38 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <nvram type='network'> + <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool'> + <host name='example.com' port='6000'/> + <auth username='myname'> + <secret type='iscsi' usage='mycluster_myname'/> + </auth> + </source> + </nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml new file mode 100644 index 0000000000..4f0d9bef1e --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml @@ -0,0 +1,35 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <nvram type='network'> + <source protocol='nbd' name='bar'> + <host name='example.org' port='6000'/> + </source> + </nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml new file mode 100644 index 0000000000..7274753f9d --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml @@ -0,0 +1,35 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <boot dev='hd'/> + </os> + <features> + <acpi/> + <smm state='off'/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index dff890218c..d95e3c67e5 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -966,7 +966,11 @@ mymain(void) DO_TEST_CAPS_LATEST("firmware-auto-efi-no-secboot"); DO_TEST_CAPS_LATEST("firmware-auto-efi-enrolled-keys"); DO_TEST_CAPS_LATEST("firmware-auto-efi-no-enrolled-keys"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-smm-off"); DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-aarch64", "aarch64"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-file"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-nbd"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-iscsi"); DO_TEST_NOCAPS("tap-vhost"); DO_TEST_NOCAPS("tap-vhost-incorrect"); -- 2.39.1

Move all the machine type related parts of qemuDomainDefPostParse() to a separate helper. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_domain.c | 45 ++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index e9bc0f375d..9db5370055 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4425,6 +4425,31 @@ qemuDomainRecheckInternalPaths(virDomainDef *def, } +static int +qemuDomainDefMachinePostParse(virDomainDef *def, + virQEMUCaps *qemuCaps) +{ + if (!def->os.machine) { + const char *machine = virQEMUCapsGetPreferredMachine(qemuCaps, + def->virtType); + if (!machine) { + virReportError(VIR_ERR_INVALID_ARG, + _("could not get preferred machine for %s type=%s"), + def->emulator, + virDomainVirtTypeToString(def->virtType)); + return -1; + } + + def->os.machine = g_strdup(machine); + } + + if (qemuCanonicalizeMachine(def, qemuCaps) < 0) + return -1; + + return 0; +} + + static int qemuDomainDefVcpusPostParse(virDomainDef *def) { @@ -4767,26 +4792,15 @@ qemuDomainDefPostParse(virDomainDef *def, if (!qemuCaps) return 1; + if (qemuDomainDefMachinePostParse(def, qemuCaps) < 0) + return -1; + if (def->os.bootloader || def->os.bootloaderArgs) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("bootloader is not supported by QEMU")); return -1; } - if (!def->os.machine) { - const char *machine = virQEMUCapsGetPreferredMachine(qemuCaps, - def->virtType); - if (!machine) { - virReportError(VIR_ERR_INVALID_ARG, - _("could not get preferred machine for %s type=%s"), - def->emulator, - virDomainVirtTypeToString(def->virtType)); - return -1; - } - - def->os.machine = g_strdup(machine); - } - if (virDomainDefHasOldStyleROUEFI(def) && !def->os.loader->nvram && def->os.loader->stateless != VIR_TRISTATE_BOOL_YES) { @@ -4799,9 +4813,6 @@ qemuDomainDefPostParse(virDomainDef *def, if (qemuDomainDefAddDefaultDevices(driver, def, qemuCaps) < 0) return -1; - if (qemuCanonicalizeMachine(def, qemuCaps) < 0) - return -1; - if (qemuDomainDefSetDefaultCPU(def, driver->hostarch, qemuCaps) < 0) return -1; -- 2.39.1

Move all the boot related parts of qemuDomainDefPostParse() to a separate helper. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_domain.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 9db5370055..da1a2413a5 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4425,6 +4425,29 @@ qemuDomainRecheckInternalPaths(virDomainDef *def, } +static int +qemuDomainDefBootPostParse(virDomainDef *def, + virQEMUDriverConfig *cfg) +{ + if (def->os.bootloader || def->os.bootloaderArgs) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("bootloader is not supported by QEMU")); + return -1; + } + + if (virDomainDefHasOldStyleROUEFI(def) && + !def->os.loader->nvram && + def->os.loader->stateless != VIR_TRISTATE_BOOL_YES) { + def->os.loader->nvram = virStorageSourceNew(); + def->os.loader->nvram->type = VIR_STORAGE_TYPE_FILE; + def->os.loader->nvram->format = VIR_STORAGE_FILE_RAW; + qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram->path); + } + + return 0; +} + + static int qemuDomainDefMachinePostParse(virDomainDef *def, virQEMUCaps *qemuCaps) @@ -4795,20 +4818,8 @@ qemuDomainDefPostParse(virDomainDef *def, if (qemuDomainDefMachinePostParse(def, qemuCaps) < 0) return -1; - if (def->os.bootloader || def->os.bootloaderArgs) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("bootloader is not supported by QEMU")); + if (qemuDomainDefBootPostParse(def, cfg) < 0) return -1; - } - - if (virDomainDefHasOldStyleROUEFI(def) && - !def->os.loader->nvram && - def->os.loader->stateless != VIR_TRISTATE_BOOL_YES) { - def->os.loader->nvram = virStorageSourceNew(); - def->os.loader->nvram->type = VIR_STORAGE_TYPE_FILE; - def->os.loader->nvram->format = VIR_STORAGE_FILE_RAW; - qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram->path); - } if (qemuDomainDefAddDefaultDevices(driver, def, qemuCaps) < 0) return -1; -- 2.39.1

On 2/15/23 11:42, Andrea Bolognani wrote:
Move all the boot related parts of qemuDomainDefPostParse() to a separate helper.
Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_domain.c | 37 ++++++++++++++++++++++++------------- 1 file changed, 24 insertions(+), 13 deletions(-)
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index 9db5370055..da1a2413a5 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -4425,6 +4425,29 @@ qemuDomainRecheckInternalPaths(virDomainDef *def, }
+static int +qemuDomainDefBootPostParse(virDomainDef *def, + virQEMUDriverConfig *cfg) +{ + if (def->os.bootloader || def->os.bootloaderArgs) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("bootloader is not supported by QEMU")); + return -1; + } +
Strictly speaking, this is a validate check. Haven't look into the future, but feel free to move it there in a follow up patch.
+ if (virDomainDefHasOldStyleROUEFI(def) && + !def->os.loader->nvram && + def->os.loader->stateless != VIR_TRISTATE_BOOL_YES) { + def->os.loader->nvram = virStorageSourceNew(); + def->os.loader->nvram->type = VIR_STORAGE_TYPE_FILE; + def->os.loader->nvram->format = VIR_STORAGE_FILE_RAW; + qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram->path); + } + + return 0; +} + + static int qemuDomainDefMachinePostParse(virDomainDef *def, virQEMUCaps *qemuCaps) @@ -4795,20 +4818,8 @@ qemuDomainDefPostParse(virDomainDef *def, if (qemuDomainDefMachinePostParse(def, qemuCaps) < 0) return -1;
- if (def->os.bootloader || def->os.bootloaderArgs) { - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", - _("bootloader is not supported by QEMU")); + if (qemuDomainDefBootPostParse(def, cfg) < 0) return -1; - } - - if (virDomainDefHasOldStyleROUEFI(def) && - !def->os.loader->nvram && - def->os.loader->stateless != VIR_TRISTATE_BOOL_YES) { - def->os.loader->nvram = virStorageSourceNew(); - def->os.loader->nvram->type = VIR_STORAGE_TYPE_FILE; - def->os.loader->nvram->format = VIR_STORAGE_FILE_RAW; - qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram->path); - }
if (qemuDomainDefAddDefaultDevices(driver, def, qemuCaps) < 0) return -1;
Michal

On Thu, Mar 02, 2023 at 04:59:36PM +0100, Michal Prívozník wrote:
On 2/15/23 11:42, Andrea Bolognani wrote:
+static int +qemuDomainDefBootPostParse(virDomainDef *def, + virQEMUDriverConfig *cfg) +{ + if (def->os.bootloader || def->os.bootloaderArgs) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", + _("bootloader is not supported by QEMU")); + return -1; + }
Strictly speaking, this is a validate check. Haven't look into the future, but feel free to move it there in a follow up patch.
Right. I'll look into it. In the meantime, I've pushed the series. Thanks a ton for the review! -- Andrea Bolognani / Red Hat / Virtualization

We already handle the <nvram> element in a separate helper, which is cleaner than having all the logic in the top-level virDomainLoaderDefParseXML() function. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/conf/domain_conf.c | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index a5578324b9..74c7889e01 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16786,19 +16786,9 @@ virDomainLoaderDefParseXMLNvram(virDomainLoaderDef *loader, static int -virDomainLoaderDefParseXML(virDomainLoaderDef *loader, - xmlNodePtr loaderNode, - xmlNodePtr nvramNode, - xmlNodePtr nvramSourceNode, - xmlXPathContextPtr ctxt, - virDomainXMLOption *xmlopt, - unsigned int flags) +virDomainLoaderDefParseXMLLoader(virDomainLoaderDef *loader, + xmlNodePtr loaderNode) { - if (virDomainLoaderDefParseXMLNvram(loader, - nvramNode, nvramSourceNode, - ctxt, xmlopt, flags) < 0) - return -1; - if (!loaderNode) return 0; @@ -16828,6 +16818,28 @@ virDomainLoaderDefParseXML(virDomainLoaderDef *loader, } +static int +virDomainLoaderDefParseXML(virDomainLoaderDef *loader, + xmlNodePtr loaderNode, + xmlNodePtr nvramNode, + xmlNodePtr nvramSourceNode, + xmlXPathContextPtr ctxt, + virDomainXMLOption *xmlopt, + unsigned int flags) +{ + if (virDomainLoaderDefParseXMLNvram(loader, + nvramNode, nvramSourceNode, + ctxt, xmlopt, flags) < 0) + return -1; + + if (virDomainLoaderDefParseXMLLoader(loader, + loaderNode) < 0) + return -1; + + return 0; +} + + static int virDomainSchedulerParseCommonAttrs(xmlNodePtr node, virProcessSchedPolicy *policy, -- 2.39.1

For now we just allocate the object, so the only advantage is that invocations are shorter and look a bit nicer. Later on, its introduction will pay off by letting us change things in a single spot instead of all over the library. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/bhyve/bhyve_firmware.c | 2 +- src/conf/domain_conf.c | 8 +++++++- src/conf/domain_conf.h | 1 + src/libvirt_private.syms | 1 + src/libxl/libxl_conf.c | 2 +- src/libxl/xen_xl.c | 4 ++-- src/libxl/xen_xm.c | 2 +- src/qemu/qemu_firmware.c | 4 ++-- 8 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/bhyve/bhyve_firmware.c b/src/bhyve/bhyve_firmware.c index b0f3026c76..cb1b94b4d5 100644 --- a/src/bhyve/bhyve_firmware.c +++ b/src/bhyve/bhyve_firmware.c @@ -78,7 +78,7 @@ bhyveFirmwareFillDomain(bhyveConn *driver, } if (!def->os.loader) - def->os.loader = g_new0(virDomainLoaderDef, 1); + def->os.loader = virDomainLoaderDefNew(); def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; def->os.loader->readonly = VIR_TRISTATE_BOOL_YES; diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 74c7889e01..8117cff83e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3714,6 +3714,12 @@ virDomainPanicDefFree(virDomainPanicDef *panic) g_free(panic); } +virDomainLoaderDef * +virDomainLoaderDefNew(void) +{ + return g_new0(virDomainLoaderDef, 1); +} + void virDomainLoaderDefFree(virDomainLoaderDef *loader) { @@ -17236,7 +17242,7 @@ virDomainDefParseBootLoaderOptions(virDomainDef *def, if (!loaderNode && !nvramNode) return 0; - def->os.loader = g_new0(virDomainLoaderDef, 1); + def->os.loader = virDomainLoaderDefNew(); if (virDomainLoaderDefParseXML(def->os.loader, loaderNode, nvramNode, nvramSourceNode, diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 62f80d653d..96121220ea 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2317,6 +2317,7 @@ struct _virDomainLoaderDef { char *nvramTemplate; /* user override of path to master nvram */ }; +virDomainLoaderDef *virDomainLoaderDefNew(void); void virDomainLoaderDefFree(virDomainLoaderDef *loader); typedef enum { diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 97c3d86217..e550e7139d 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -507,6 +507,7 @@ virDomainLeaseRemoveAt; virDomainLifecycleActionTypeFromString; virDomainLifecycleActionTypeToString; virDomainLoaderDefFree; +virDomainLoaderDefNew; virDomainLoaderTypeFromString; virDomainLoaderTypeToString; virDomainLockFailureTypeFromString; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index cee9f827f7..97c183ebf3 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -643,7 +643,7 @@ libxlMakeDomBuildInfo(virDomainDef *def, */ if (def->os.firmware == VIR_DOMAIN_OS_DEF_FIRMWARE_EFI) { if (def->os.loader == NULL) - def->os.loader = g_new0(virDomainLoaderDef, 1); + def->os.loader = virDomainLoaderDefNew(); if (def->os.loader->path == NULL) def->os.loader->path = g_strdup(cfg->firmwares[0]->name); if (def->os.loader->type == VIR_DOMAIN_LOADER_TYPE_NONE) diff --git a/src/libxl/xen_xl.c b/src/libxl/xen_xl.c index 6919325623..cfd56b3b05 100644 --- a/src/libxl/xen_xl.c +++ b/src/libxl/xen_xl.c @@ -111,7 +111,7 @@ xenParseXLOS(virConf *conf, virDomainDef *def, virCaps *caps) return -1; if (bios && STREQ(bios, "ovmf")) { - def->os.loader = g_new0(virDomainLoaderDef, 1); + def->os.loader = virDomainLoaderDefNew(); def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; def->os.loader->readonly = VIR_TRISTATE_BOOL_YES; @@ -120,7 +120,7 @@ xenParseXLOS(virConf *conf, virDomainDef *def, virCaps *caps) for (i = 0; i < caps->nguests; i++) { if (caps->guests[i]->ostype == VIR_DOMAIN_OSTYPE_HVM && caps->guests[i]->arch.id == def->os.arch) { - def->os.loader = g_new0(virDomainLoaderDef, 1); + def->os.loader = virDomainLoaderDefNew(); def->os.loader->path = g_strdup(caps->guests[i]->arch.defaultInfo.loader); } } diff --git a/src/libxl/xen_xm.c b/src/libxl/xen_xm.c index 081d323c2a..334de071ba 100644 --- a/src/libxl/xen_xm.c +++ b/src/libxl/xen_xm.c @@ -42,7 +42,7 @@ xenParseXMOS(virConf *conf, virDomainDef *def) if (def->os.type == VIR_DOMAIN_OSTYPE_HVM) { g_autofree char *boot = NULL; - def->os.loader = g_new0(virDomainLoaderDef, 1); + def->os.loader = virDomainLoaderDefNew(); if (xenConfigCopyString(conf, "kernel", &def->os.loader->path) < 0) return -1; diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index eb7abb0b32..98b42bc6fb 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1168,7 +1168,7 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, switch (fw->mapping.device) { case QEMU_FIRMWARE_DEVICE_FLASH: if (!def->os.loader) - def->os.loader = g_new0(virDomainLoaderDef, 1); + def->os.loader = virDomainLoaderDefNew(); def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; def->os.loader->readonly = VIR_TRISTATE_BOOL_YES; @@ -1218,7 +1218,7 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, case QEMU_FIRMWARE_DEVICE_MEMORY: if (!def->os.loader) - def->os.loader = g_new0(virDomainLoaderDef, 1); + def->os.loader = virDomainLoaderDefNew(); def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_ROM; def->os.loader->path = g_strdup(memory->filename); -- 2.39.1

This makes the code more compact and less awkward. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 58 +++++++++++++++++++++------------------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 98b42bc6fb..13bac9490a 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -986,6 +986,7 @@ qemuFirmwareMatchDomain(const virDomainDef *def, const qemuFirmware *fw, const char *path) { + const virDomainLoaderDef *loader = def->os.loader; size_t i; qemuFirmwareOSInterface want; bool supportsS3 = false; @@ -1000,17 +1001,16 @@ qemuFirmwareMatchDomain(const virDomainDef *def, want = qemuFirmwareOSInterfaceTypeFromOsDefFirmware(def->os.firmware); - if (want == QEMU_FIRMWARE_OS_INTERFACE_NONE && - def->os.loader) { - want = qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(def->os.loader->type); + if (want == QEMU_FIRMWARE_OS_INTERFACE_NONE && loader) { + want = qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(loader->type); if (fw->mapping.device != QEMU_FIRMWARE_DEVICE_FLASH || - STRNEQ(def->os.loader->path, fw->mapping.data.flash.executable.filename)) { + STRNEQ(loader->path, fw->mapping.data.flash.executable.filename)) { VIR_DEBUG("Not matching FW interface %s or loader " "path '%s' for user provided path '%s'", qemuFirmwareDeviceTypeToString(fw->mapping.device), fw->mapping.data.flash.executable.filename, - def->os.loader->path); + loader->path); return false; } } @@ -1102,8 +1102,7 @@ qemuFirmwareMatchDomain(const virDomainDef *def, } } - if (def->os.loader && - def->os.loader->secure == VIR_TRISTATE_BOOL_YES && + if (loader && loader->secure == VIR_TRISTATE_BOOL_YES && !requiresSMM) { VIR_DEBUG("Domain restricts pflash programming to SMM, " "but firmware '%s' doesn't support SMM", path); @@ -1111,13 +1110,15 @@ qemuFirmwareMatchDomain(const virDomainDef *def, } if (fw->mapping.device == QEMU_FIRMWARE_DEVICE_FLASH) { - if (def->os.loader && def->os.loader->stateless == VIR_TRISTATE_BOOL_YES) { - if (fw->mapping.data.flash.mode != QEMU_FIRMWARE_FLASH_MODE_STATELESS) { + const qemuFirmwareMappingFlash *flash = &fw->mapping.data.flash; + + if (loader && loader->stateless == VIR_TRISTATE_BOOL_YES) { + if (flash->mode != QEMU_FIRMWARE_FLASH_MODE_STATELESS) { VIR_DEBUG("Discarding loader without stateless flash"); return false; } } else { - if (fw->mapping.data.flash.mode != QEMU_FIRMWARE_FLASH_MODE_SPLIT) { + if (flash->mode != QEMU_FIRMWARE_FLASH_MODE_SPLIT) { VIR_DEBUG("Discarding loader without split flash"); return false; } @@ -1163,15 +1164,17 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, const qemuFirmwareMappingFlash *flash = &fw->mapping.data.flash; const qemuFirmwareMappingKernel *kernel = &fw->mapping.data.kernel; const qemuFirmwareMappingMemory *memory = &fw->mapping.data.memory; + virDomainLoaderDef *loader = NULL; size_t i; switch (fw->mapping.device) { case QEMU_FIRMWARE_DEVICE_FLASH: if (!def->os.loader) def->os.loader = virDomainLoaderDefNew(); + loader = def->os.loader; - def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; - def->os.loader->readonly = VIR_TRISTATE_BOOL_YES; + loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; + loader->readonly = VIR_TRISTATE_BOOL_YES; if (STRNEQ(flash->executable.format, "raw")) { virReportError(VIR_ERR_OPERATION_UNSUPPORTED, @@ -1180,8 +1183,8 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, return -1; } - VIR_FREE(def->os.loader->path); - def->os.loader->path = g_strdup(flash->executable.filename); + VIR_FREE(loader->path); + loader->path = g_strdup(flash->executable.filename); if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { if (STRNEQ(flash->nvram_template.format, "raw")) { @@ -1191,21 +1194,21 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, return -1; } - VIR_FREE(def->os.loader->nvramTemplate); - def->os.loader->nvramTemplate = g_strdup(flash->nvram_template.filename); + VIR_FREE(loader->nvramTemplate); + loader->nvramTemplate = g_strdup(flash->nvram_template.filename); - if (!def->os.loader->nvram) { - def->os.loader->nvram = virStorageSourceNew(); - def->os.loader->nvram->type = VIR_STORAGE_TYPE_FILE; - def->os.loader->nvram->format = VIR_STORAGE_FILE_RAW; - qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram->path); + if (!loader->nvram) { + loader->nvram = virStorageSourceNew(); + loader->nvram->type = VIR_STORAGE_TYPE_FILE; + loader->nvram->format = VIR_STORAGE_FILE_RAW; + qemuDomainNVRAMPathFormat(cfg, def, &loader->nvram->path); } } VIR_DEBUG("decided on firmware '%s' template '%s' NVRAM '%s'", - def->os.loader->path, - NULLSTR(def->os.loader->nvramTemplate), - NULLSTR(def->os.loader->nvram ? def->os.loader->nvram->path : NULL)); + loader->path, + NULLSTR(loader->nvramTemplate), + NULLSTR(loader->nvram ? loader->nvram->path : NULL)); break; case QEMU_FIRMWARE_DEVICE_KERNEL: @@ -1219,12 +1222,13 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, case QEMU_FIRMWARE_DEVICE_MEMORY: if (!def->os.loader) def->os.loader = virDomainLoaderDefNew(); + loader = def->os.loader; - def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_ROM; - def->os.loader->path = g_strdup(memory->filename); + loader->type = VIR_DOMAIN_LOADER_TYPE_ROM; + loader->path = g_strdup(memory->filename); VIR_DEBUG("decided on loader '%s'", - def->os.loader->path); + loader->path); break; case QEMU_FIRMWARE_DEVICE_NONE: -- 2.39.1

It doesn't make sense for non-local sources, since we can't create or reset the corresponding NVRAM file. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 13bac9490a..175a4db21d 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1194,15 +1194,20 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, return -1; } - VIR_FREE(loader->nvramTemplate); - loader->nvramTemplate = g_strdup(flash->nvram_template.filename); - if (!loader->nvram) { loader->nvram = virStorageSourceNew(); loader->nvram->type = VIR_STORAGE_TYPE_FILE; loader->nvram->format = VIR_STORAGE_FILE_RAW; qemuDomainNVRAMPathFormat(cfg, def, &loader->nvram->path); } + + /* If the NVRAM is not a local path then we can't create or + * reset it, so in that case filling in the nvramTemplate + * field would be misleading */ + VIR_FREE(loader->nvramTemplate); + if (loader->nvram && virStorageSourceIsLocalStorage(loader->nvram)) { + loader->nvramTemplate = g_strdup(flash->nvram_template.filename); + } } VIR_DEBUG("decided on firmware '%s' template '%s' NVRAM '%s'", -- 2.39.1

We already clear os.firmware, so it doesn't make sense to keep the list of features around. Moreover, our validation routines will reject an XML that contains a list of firmware features but disables firmware autoselection, so not clearing these means that the live XML for a domain that uses feature-based autoselection can't be fed back into libvirt. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 175a4db21d..572172bc75 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1454,6 +1454,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, goto cleanup; def->os.firmware = VIR_DOMAIN_OS_DEF_FIRMWARE_NONE; + VIR_FREE(def->os.firmwareFeatures); ret = 0; cleanup: -- 2.39.1

At the moment, if SMM is explicitly disabled in the domain XML but a firmware descriptor that requires SMM to be enabled has the highest priority and otherwise matches the requirements, we pick that firmware only to error out later, when the domain is started. A better approach is to take into account the fact that SMM is disabled while performing autoselection, and ignore all descriptors that advertise the requires-smm feature. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 33 +++++++---------- ...rmware-auto-efi-smm-off.x86_64-latest.args | 37 +++++++++++++++++++ ...irmware-auto-efi-smm-off.x86_64-latest.err | 1 - tests/qemuxml2argvtest.c | 2 +- 4 files changed, 52 insertions(+), 21 deletions(-) create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.args delete mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.err diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 572172bc75..c24bca6183 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1102,11 +1102,18 @@ qemuFirmwareMatchDomain(const virDomainDef *def, } } - if (loader && loader->secure == VIR_TRISTATE_BOOL_YES && - !requiresSMM) { - VIR_DEBUG("Domain restricts pflash programming to SMM, " - "but firmware '%s' doesn't support SMM", path); - return false; + if (requiresSMM) { + if (def->features[VIR_DOMAIN_FEATURE_SMM] == VIR_TRISTATE_SWITCH_OFF) { + VIR_DEBUG("Domain explicitly disables SMM, " + "but firmware '%s' requires it to be enabled", path); + return false; + } + } else { + if (loader && loader->secure == VIR_TRISTATE_BOOL_YES) { + VIR_DEBUG("Domain restricts pflash programming to SMM, " + "but firmware '%s' doesn't support SMM", path); + return false; + } } if (fw->mapping.device == QEMU_FIRMWARE_DEVICE_FLASH) { @@ -1244,21 +1251,9 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, for (i = 0; i < fw->nfeatures; i++) { switch (fw->features[i]) { case QEMU_FIRMWARE_FEATURE_REQUIRES_SMM: - switch (def->features[VIR_DOMAIN_FEATURE_SMM]) { - case VIR_TRISTATE_SWITCH_OFF: - virReportError(VIR_ERR_OPERATION_INVALID, "%s", - _("domain has SMM turned off " - "but chosen firmware requires it")); - return -1; - case VIR_TRISTATE_SWITCH_ABSENT: - VIR_DEBUG("Enabling SMM feature"); - def->features[VIR_DOMAIN_FEATURE_SMM] = VIR_TRISTATE_SWITCH_ON; - break; + VIR_DEBUG("Enabling SMM feature"); + def->features[VIR_DOMAIN_FEATURE_SMM] = VIR_TRISTATE_SWITCH_ON; - case VIR_TRISTATE_SWITCH_ON: - case VIR_TRISTATE_SWITCH_LAST: - break; - } VIR_DEBUG("Enabling secure loader"); def->os.loader->secure = VIR_TRISTATE_BOOL_YES; break; diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.args new file mode 100644 index 0000000000..692795194f --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.args @@ -0,0 +1,37 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ +-machine pc-q35-4.0,usb=off,smm=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel kvm \ +-cpu qemu64 \ +-m 1024 \ +-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/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.err deleted file mode 100644 index f4e2e13a15..0000000000 --- a/tests/qemuxml2argvdata/firmware-auto-efi-smm-off.x86_64-latest.err +++ /dev/null @@ -1 +0,0 @@ -Requested operation is not valid: domain has SMM turned off but chosen firmware requires it diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index c18958db86..812e87ea90 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1162,7 +1162,7 @@ mymain(void) DO_TEST_CAPS_LATEST("firmware-auto-efi-enrolled-keys"); DO_TEST_CAPS_LATEST("firmware-auto-efi-no-enrolled-keys"); DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-auto-efi-enrolled-keys-no-secboot"); - DO_TEST_CAPS_LATEST_FAILURE("firmware-auto-efi-smm-off"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-smm-off"); DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-aarch64", "aarch64"); DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-file"); DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-nbd"); -- 2.39.1

Right now, if the descriptor with the highest priority happens to describe a firmware in a format other than raw, no domain that uses autoselection will be able to start. A better approach is to filter out descriptors that advertise unsupported formats during autoselection. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index c24bca6183..72036bd82b 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1130,6 +1130,19 @@ qemuFirmwareMatchDomain(const virDomainDef *def, return false; } } + + if (STRNEQ(flash->executable.format, "raw")) { + VIR_DEBUG("Discarding loader with unsupported flash format '%s'", + flash->executable.format); + return false; + } + if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { + if (STRNEQ(flash->nvram_template.format, "raw")) { + VIR_DEBUG("Discarding loader with unsupported nvram template format '%s'", + flash->nvram_template.format); + return false; + } + } } if (def->sec) { @@ -1183,24 +1196,10 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; loader->readonly = VIR_TRISTATE_BOOL_YES; - if (STRNEQ(flash->executable.format, "raw")) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, - _("unsupported flash format '%s'"), - flash->executable.format); - return -1; - } - VIR_FREE(loader->path); loader->path = g_strdup(flash->executable.filename); if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { - if (STRNEQ(flash->nvram_template.format, "raw")) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, - _("unsupported nvram template format '%s'"), - flash->nvram_template.format); - return -1; - } - if (!loader->nvram) { loader->nvram = virStorageSourceNew(); loader->nvram->type = VIR_STORAGE_TYPE_FILE; -- 2.39.1

Now that we ignore all firmwares that are not in raw format while performing autoselection, we can have descriptors for firmware builds in QCOW2 format without breaking anything. Note that the descriptors are arranged so that they have the highest priority on aarch64, but the lowest one on x86_64. This matches the expectation that QCOW2 will quickly be adopted as the default on aarch64, where its use produces significant benefits in terms of memory usage, while x86_64 will likely stick with raw for the foreseeable future. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- .../share/qemu/firmware/65-ovmf-qcow2.json | 35 ++++++++++++++++++ .../share/qemu/firmware/66-aavmf-qcow2.json | 36 +++++++++++++++++++ tests/qemufirmwaretest.c | 11 ++++-- 3 files changed, 80 insertions(+), 2 deletions(-) create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/65-ovmf-qcow2.json create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/66-aavmf-qcow2.json diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/65-ovmf-qcow2.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/65-ovmf-qcow2.json new file mode 100644 index 0000000000..3a45cf70f2 --- /dev/null +++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/65-ovmf-qcow2.json @@ -0,0 +1,35 @@ +{ + "description": "UEFI firmware for x86_64 virtual machines (QCOW2 format)", + "interface-types": [ + "uefi" + ], + "mapping": { + "device": "flash", + "mode": "split", + "executable": { + "filename": "/usr/share/OVMF/OVMF_CODE.qcow2", + "format": "qcow2" + }, + "nvram-template": { + "filename": "/usr/share/OVMF/OVMF_VARS.qcow2", + "format": "qcow2" + } + }, + "targets": [ + { + "architecture": "x86_64", + "machines": [ + "pc-i440fx-*", + "pc-q35-*" + ] + } + ], + "features": [ + "acpi-s3", + "amd-sev", + "verbose-dynamic" + ], + "tags": [ + + ] +} diff --git a/tests/qemufirmwaredata/usr/share/qemu/firmware/66-aavmf-qcow2.json b/tests/qemufirmwaredata/usr/share/qemu/firmware/66-aavmf-qcow2.json new file mode 100644 index 0000000000..9d80971ee4 --- /dev/null +++ b/tests/qemufirmwaredata/usr/share/qemu/firmware/66-aavmf-qcow2.json @@ -0,0 +1,36 @@ +{ + "description": "UEFI firmware for ARM64 virtual machines (QCOW2 format)", + "interface-types": [ + "uefi" + ], + "mapping": { + "device": "flash", + "mode": "split", + "executable": { + "filename": "/usr/share/AAVMF/AAVMF_CODE.qcow2", + "format": "qcow2" + }, + "nvram-template": { + "filename": "/usr/share/AAVMF/AAVMF_VARS.qcow2", + "format": "qcow2" + } + }, + "targets": [ + { + "architecture": "aarch64", + "machines": [ + "virt-*" + ] + } + ], + "features": [ + + ], + "tags": [ + "-a AARCH64", + "-p ArmVirtPkg/ArmVirtQemu.dsc", + "-t GCC48", + "-b DEBUG", + "-D DEBUG_PRINT_ERROR_LEVEL=0x80000000" + ] +} diff --git a/tests/qemufirmwaretest.c b/tests/qemufirmwaretest.c index fc3416b2ae..6817c93d9a 100644 --- a/tests/qemufirmwaretest.c +++ b/tests/qemufirmwaretest.c @@ -73,6 +73,8 @@ testFWPrecedence(const void *opaque G_GNUC_UNUSED) PREFIX "/share/qemu/firmware/50-ovmf-sb-keys.json", PREFIX "/share/qemu/firmware/55-ovmf-sb-combined.json", PREFIX "/share/qemu/firmware/61-ovmf.json", + PREFIX "/share/qemu/firmware/65-ovmf-qcow2.json", + PREFIX "/share/qemu/firmware/66-aavmf-qcow2.json", PREFIX "/share/qemu/firmware/70-aavmf.json", NULL }; @@ -234,6 +236,8 @@ mymain(void) DO_PARSE_TEST("usr/share/qemu/firmware/55-ovmf-sb-combined.json"); DO_PARSE_TEST("usr/share/qemu/firmware/60-ovmf-sb.json"); DO_PARSE_TEST("usr/share/qemu/firmware/61-ovmf.json"); + DO_PARSE_TEST("usr/share/qemu/firmware/65-ovmf-qcow2.json"); + DO_PARSE_TEST("usr/share/qemu/firmware/66-aavmf-qcow2.json"); DO_PARSE_TEST("usr/share/qemu/firmware/70-aavmf.json"); if (virTestRun("QEMU FW precedence test", testFWPrecedence, NULL) < 0) @@ -254,7 +258,8 @@ mymain(void) DO_SUPPORTED_TEST("pc-i440fx-3.1", VIR_ARCH_X86_64, false, "/usr/share/seabios/bios-256k.bin:NULL:" - "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd", + "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd:" + "/usr/share/OVMF/OVMF_CODE.qcow2:/usr/share/OVMF/OVMF_VARS.qcow2", VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS, VIR_DOMAIN_OS_DEF_FIRMWARE_EFI); DO_SUPPORTED_TEST("pc-i440fx-3.1", VIR_ARCH_I686, false, @@ -265,13 +270,15 @@ mymain(void) "/usr/share/OVMF/OVMF_CODE.secboot.fd:/usr/share/OVMF/OVMF_VARS.secboot.fd:" "/usr/share/OVMF/OVMF.sev.fd:NULL:" "/usr/share/OVMF/OVMF.secboot.fd:NULL:" - "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd", + "/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd:" + "/usr/share/OVMF/OVMF_CODE.qcow2:/usr/share/OVMF/OVMF_VARS.qcow2", VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS, VIR_DOMAIN_OS_DEF_FIRMWARE_EFI); DO_SUPPORTED_TEST("pc-q35-3.1", VIR_ARCH_I686, false, "/usr/share/seabios/bios-256k.bin:NULL", VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS); DO_SUPPORTED_TEST("virt-3.1", VIR_ARCH_AARCH64, false, + "/usr/share/AAVMF/AAVMF_CODE.qcow2:/usr/share/AAVMF/AAVMF_VARS.qcow2:" "/usr/share/AAVMF/AAVMF_CODE.fd:/usr/share/AAVMF/AAVMF_VARS.fd", VIR_DOMAIN_OS_DEF_FIRMWARE_EFI); -- 2.39.1

We're going to need it elsewhere very soon. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/conf/domain_validate.c | 4 ++-- src/conf/domain_validate.h | 3 +++ src/libvirt_private.syms | 1 + 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/conf/domain_validate.c b/src/conf/domain_validate.c index 5559a71e14..db13e56107 100644 --- a/src/conf/domain_validate.c +++ b/src/conf/domain_validate.c @@ -1586,14 +1586,14 @@ virDomainDefMemtuneValidate(const virDomainDef *def) } -static int +int virDomainDefOSValidate(const virDomainDef *def, virDomainXMLOption *xmlopt) { virDomainLoaderDef *loader = def->os.loader; if (def->os.firmware) { - if (!(xmlopt->config.features & VIR_DOMAIN_DEF_FEATURE_FW_AUTOSELECT)) { + if (xmlopt && !(xmlopt->config.features & VIR_DOMAIN_DEF_FEATURE_FW_AUTOSELECT)) { virReportError(VIR_ERR_XML_DETAIL, "%s", _("firmware auto selection not implemented for this driver")); return -1; diff --git a/src/conf/domain_validate.h b/src/conf/domain_validate.h index 07b99195e3..fc441cef5b 100644 --- a/src/conf/domain_validate.h +++ b/src/conf/domain_validate.h @@ -44,3 +44,6 @@ int virDomainDiskDefValidateSource(const virStorageSource *src); int virDomainDiskDefValidateStartupPolicy(const virDomainDiskDef *disk); int virDomainDiskDefSourceLUNValidate(const virStorageSource *src); + +int virDomainDefOSValidate(const virDomainDef *def, + virDomainXMLOption *xmlopt); diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index e550e7139d..5a356ccd48 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -793,6 +793,7 @@ virDomainDefPostParse; # conf/domain_validate.h virDomainActualNetDefValidate; +virDomainDefOSValidate; virDomainDefValidate; virDomainDeviceValidateAliasForHotplug; virDomainDiskDefSourceLUNValidate; -- 2.39.1

Currently, firmware selection is performed as part of the domain startup process. This mostly works fine, but there's a significant downside to this approach: since the process is affected by factors outside of libvirt's control, specifically the contents of the various JSON firmware descriptors and their names, it's pretty much impossible to guarantee that the outcome is always going to be the same. It would only take an edk2 update, or a change made by the local admin, to render a domain unbootable or downgrade its boot security. To avoid this, move firmware selection to the postparse phase. This way it will only be performed once, when the domain is first defined; subsequent boots will not need to go through the process again, as all the paths that were picked during firmware selection are recorded in the domain XML. Care is taken to ensure that existing domains are handled correctly, even if their firmware configuration can't be successfully resolved. Failure to complete the firmware selection process is only considered fatal when defining a new domain; in all other cases the error will be reported during startup, as is already the case today. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_domain.c | 40 ++- src/qemu/qemu_driver.c | 2 - src/qemu/qemu_firmware.c | 268 ++++++++++++++---- src/qemu/qemu_firmware.h | 3 +- src/qemu/qemu_process.c | 33 ++- .../aarch64-virt-graphics.aarch64-latest.xml | 2 +- .../aarch64-virt-headless.aarch64-latest.xml | 2 +- ...ware-auto-bios-stateless.x86_64-latest.xml | 4 +- .../firmware-auto-bios.x86_64-latest.xml | 3 +- ...rmware-auto-efi-aarch64.aarch64-latest.xml | 4 +- ...e-auto-efi-enrolled-keys.x86_64-latest.xml | 9 +- ...e-auto-efi-loader-secure.x86_64-latest.xml | 6 +- ...uto-efi-no-enrolled-keys.x86_64-latest.xml | 7 +- ...ware-auto-efi-no-secboot.x86_64-latest.xml | 7 +- ...ware-auto-efi-nvram-file.x86_64-latest.xml | 5 +- ...-efi-nvram-network-iscsi.x86_64-latest.xml | 3 +- ...to-efi-nvram-network-nbd.x86_64-latest.xml | 3 +- .../firmware-auto-efi-nvram.x86_64-latest.xml | 6 +- ...irmware-auto-efi-secboot.x86_64-latest.xml | 8 +- ...irmware-auto-efi-smm-off.x86_64-latest.xml | 4 +- ...mware-auto-efi-stateless.x86_64-latest.xml | 4 +- .../firmware-auto-efi.x86_64-latest.xml | 5 +- ...manual-efi-acpi-aarch64.aarch64-latest.xml | 2 +- ...ware-manual-efi-acpi-q35.x86_64-latest.xml | 2 +- ...nual-efi-noacpi-aarch64.aarch64-latest.xml | 2 +- ...re-manual-efi-nvram-file.x86_64-latest.xml | 2 +- ...rmware-manual-efi-secure.x86_64-latest.xml | 2 +- .../firmware-manual-efi.x86_64-latest.xml | 2 +- .../virtio-iommu-aarch64.aarch64-latest.xml | 4 +- 29 files changed, 310 insertions(+), 134 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index da1a2413a5..fad46fec1b 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -27,6 +27,7 @@ #include "qemu_cgroup.h" #include "qemu_command.h" #include "qemu_capabilities.h" +#include "qemu_firmware.h" #include "qemu_hostdev.h" #include "qemu_migration_params.h" #include "qemu_security.h" @@ -4427,21 +4428,42 @@ qemuDomainRecheckInternalPaths(virDomainDef *def, static int qemuDomainDefBootPostParse(virDomainDef *def, - virQEMUDriverConfig *cfg) + virQEMUDriver *driver, + unsigned int parseFlags) { + bool abiUpdate = !!(parseFlags & VIR_DOMAIN_DEF_PARSE_ABI_UPDATE); + if (def->os.bootloader || def->os.bootloaderArgs) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s", _("bootloader is not supported by QEMU")); return -1; } - if (virDomainDefHasOldStyleROUEFI(def) && - !def->os.loader->nvram && - def->os.loader->stateless != VIR_TRISTATE_BOOL_YES) { - def->os.loader->nvram = virStorageSourceNew(); - def->os.loader->nvram->type = VIR_STORAGE_TYPE_FILE; - def->os.loader->nvram->format = VIR_STORAGE_FILE_RAW; - qemuDomainNVRAMPathFormat(cfg, def, &def->os.loader->nvram->path); + /* 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 + * satisfy on the current system. + * + * If that happens, we have to react differently based on the + * situation: if we're defining a new domain or updating its ABI, + * we should let the user know immediately so that they can + * change the requested configuration, hopefully into one that we + * can work with; if we're loading the configuration of an + * existing domain from disk, however, we absolutely cannot error + * out here, or the domain will disappear. + * + * To handle the second case gracefully, we clear any reported + * errors and continue as if nothing had happened. When it's time + * to start the domain, qemuFirmwareFillDomain() will be run + * again, fail in the same way, and at that point we'll have a + * chance to inform the user of any issues */ + if (qemuFirmwareFillDomain(driver, def) < 0) { + if (abiUpdate) { + return -1; + } else { + virResetLastError(); + return 0; + } } return 0; @@ -4818,7 +4840,7 @@ qemuDomainDefPostParse(virDomainDef *def, if (qemuDomainDefMachinePostParse(def, qemuCaps) < 0) return -1; - if (qemuDomainDefBootPostParse(def, cfg) < 0) + if (qemuDomainDefBootPostParse(def, driver, parseFlags) < 0) return -1; if (qemuDomainDefAddDefaultDevices(driver, def, qemuCaps) < 0) diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index 6154fe9bfe..b102b7787e 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -6570,8 +6570,6 @@ qemuDomainUndefineFlags(virDomainPtr dom, if (vm->def->os.loader && vm->def->os.loader->nvram && virStorageSourceIsLocalStorage(vm->def->os.loader->nvram)) { nvram_path = g_strdup(vm->def->os.loader->nvram->path); - } else if (vm->def->os.firmware == VIR_DOMAIN_OS_DEF_FIRMWARE_EFI) { - qemuDomainNVRAMPathFormat(cfg, vm->def, &nvram_path); } if (nvram_path && virFileExists(nvram_path)) { diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 72036bd82b..4a6adedfcb 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -26,6 +26,7 @@ #include "qemu_capabilities.h" #include "qemu_domain.h" #include "qemu_process.h" +#include "domain_validate.h" #include "virarch.h" #include "virjson.h" #include "virlog.h" @@ -1176,11 +1177,10 @@ qemuFirmwareMatchDomain(const virDomainDef *def, static int -qemuFirmwareEnableFeatures(virQEMUDriver *driver, - virDomainDef *def, - const qemuFirmware *fw) +qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg, + virDomainDef *def, + const qemuFirmware *fw) { - g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); const qemuFirmwareMappingFlash *flash = &fw->mapping.data.flash; const qemuFirmwareMappingKernel *kernel = &fw->mapping.data.kernel; const qemuFirmwareMappingMemory *memory = &fw->mapping.data.memory; @@ -1216,10 +1216,8 @@ qemuFirmwareEnableFeatures(virQEMUDriver *driver, } } - VIR_DEBUG("decided on firmware '%s' template '%s' NVRAM '%s'", - loader->path, - NULLSTR(loader->nvramTemplate), - NULLSTR(loader->nvram ? loader->nvram->path : NULL)); + VIR_DEBUG("decided on firmware '%s' template '%s'", + loader->path, NULLSTR(loader->nvramTemplate)); break; case QEMU_FIRMWARE_DEVICE_KERNEL: @@ -1360,58 +1358,99 @@ qemuFirmwareFetchParsedConfigs(bool privileged, } -int -qemuFirmwareFillDomain(virQEMUDriver *driver, - virDomainDef *def, - unsigned int flags) +/** + * qemuFirmwareFillDomainLegacy: + * @driver: QEMU driver + * @def: domain definition + * + * Go through the legacy list of CODE:VARS pairs looking for a + * suitable NVRAM template for the user-provided firmware path. + * + * Should only be used as a fallback in case looking at the firmware + * descriptors yielded no results. + * + * Returns: 0 on success, + * 1 if a matching firmware could not be found, + * -1 on error. + */ +static int +qemuFirmwareFillDomainLegacy(virQEMUDriver *driver, + virDomainDef *def) { - g_auto(GStrv) paths = NULL; - qemuFirmware **firmwares = NULL; - ssize_t nfirmwares = 0; - const qemuFirmware *theone = NULL; - bool needResult = true; - const bool reset_nvram = flags & VIR_QEMU_PROCESS_START_RESET_NVRAM; + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + virDomainLoaderDef *loader = def->os.loader; size_t i; - int ret = -1; - /* Fill in FW paths if either os.firmware is enabled, or - * loader path was provided with no nvram varstore. */ - if (def->os.firmware == VIR_DOMAIN_OS_DEF_FIRMWARE_NONE) { - /* This is horrific check, but loosely said, if UEFI - * image was provided by the old method (by specifying - * its path in domain XML) but no template for NVRAM was - * specified and the varstore doesn't exist ... */ - if (!virDomainDefHasOldStyleROUEFI(def) || - def->os.loader->nvramTemplate) - return 0; + if (!loader) + return 0; - if (def->os.loader->nvram) { - if (!virStorageSourceIsLocalStorage(def->os.loader->nvram)) { - if (reset_nvram) { - virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", - _("resetting of nvram is not supported with network backed nvram")); - return -1; - } - - /* we don't scrutinize whether NVRAM image accessed via network - * is present */ - return 0; - } + if (loader->type != VIR_DOMAIN_LOADER_TYPE_PFLASH) { + VIR_DEBUG("Ignoring legacy entries for '%s' loader", + virDomainLoaderTypeToString(loader->type)); + return 0; + } - if (!reset_nvram && virFileExists(def->os.loader->nvram->path)) - return 0; + if (loader->stateless == VIR_TRISTATE_BOOL_YES) { + VIR_DEBUG("Ignoring legacy entries for stateless loader"); + return 0; + } + + for (i = 0; i < cfg->nfirmwares; i++) { + virFirmware *fw = cfg->firmwares[i]; + + if (STRNEQ(fw->name, loader->path)) { + VIR_DEBUG("Not matching loader path '%s' for user provided path '%s'", + fw->name, loader->path); + continue; } - /* ... then we want to consult JSON FW descriptors first, - * but we don't want to fail if we haven't found a match. */ - needResult = false; - } else { - /* Domain has FW autoselection enabled => do nothing if - * we are not starting it from scratch. */ - if (!(flags & VIR_QEMU_PROCESS_START_NEW)) - return 0; + loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; + loader->readonly = VIR_TRISTATE_BOOL_YES; + loader->nvramTemplate = g_strdup(cfg->firmwares[i]->nvram); + + if (!loader->nvram) { + loader->nvram = virStorageSourceNew(); + loader->nvram->type = VIR_STORAGE_TYPE_FILE; + loader->nvram->format = VIR_STORAGE_FILE_RAW; + qemuDomainNVRAMPathFormat(cfg, def, &loader->nvram->path); + } + + VIR_DEBUG("decided on firmware '%s' template '%s'", + loader->path, NULLSTR(loader->nvramTemplate)); + + return 0; } + return 1; +} + + +/** + * qemuFirmwareFillDomainModern: + * @driver: QEMU driver + * @def: domain definition + * + * Look at the firmware descriptors available on the system and try + * to find one that matches the user's requested configuration. If + * successful, @def will be updated so that it explicitly points to + * the corresponding paths. + * + * Returns: 0 on success, + * 1 if a matching firmware could not be found, + * -1 on error. + */ +static int +qemuFirmwareFillDomainModern(virQEMUDriver *driver, + virDomainDef *def) +{ + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + g_auto(GStrv) paths = NULL; + qemuFirmware **firmwares = NULL; + ssize_t nfirmwares = 0; + const qemuFirmware *theone = NULL; + size_t i; + int ret = -1; + if ((nfirmwares = qemuFirmwareFetchParsedConfigs(driver->privileged, &firmwares, &paths)) < 0) return -1; @@ -1426,16 +1465,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, } if (!theone) { - if (needResult) { - virReportError(VIR_ERR_OPERATION_FAILED, - _("Unable to find any firmware to satisfy '%s'"), - virDomainOsDefFirmwareTypeToString(def->os.firmware)); - } else { - VIR_DEBUG("Unable to find NVRAM template for '%s', " - "falling back to old style", - NULLSTR(def->os.loader ? def->os.loader->path : NULL)); - ret = 0; - } + ret = 1; goto cleanup; } @@ -1444,13 +1474,14 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, * likely that admin/FW manufacturer messed up. */ qemuFirmwareSanityCheck(theone, paths[i]); - if (qemuFirmwareEnableFeatures(driver, def, theone) < 0) + if (qemuFirmwareEnableFeaturesModern(cfg, def, theone) < 0) goto cleanup; def->os.firmware = VIR_DOMAIN_OS_DEF_FIRMWARE_NONE; VIR_FREE(def->os.firmwareFeatures); ret = 0; + cleanup: for (i = 0; i < nfirmwares; i++) qemuFirmwareFree(firmwares[i]); @@ -1459,6 +1490,119 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, } +/** + * qemuFirmwareFillDomain: + * @driver: QEMU driver + * @def: domain definition + * + * Perform firmware selection. + * + * When firmware autoselection is used, this means looking at the + * firmware descriptors available on the system and finding one that + * matches the user's requested parameters; when manual firmware + * selection is used, the path to the firmware itself is usually + * already provided, but other information such as the path to the + * NVRAM template might be missing. + * + * The idea is that calling this function a first time (at PostParse + * time) will convert whatever partial configuration the user might + * have provided into a fully specified firmware configuration, such + * as that calling it a second time (at domain start time) will + * result in an early successful exit. The same thing should happen + * if the input configuration wasn't missing any information in the + * first place. + * + * Returns: 0 on success, + * -1 on error. + */ +int +qemuFirmwareFillDomain(virQEMUDriver *driver, + virDomainDef *def) +{ + g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); + virDomainLoaderDef *loader = def->os.loader; + bool autoSelection = (def->os.firmware != VIR_DOMAIN_OS_DEF_FIRMWARE_NONE); + int ret; + + /* Start by performing a thorough validation of the input. + * + * We need to do this here because the firmware selection logic + * can only work correctly if the request is constructed + * properly; at the same time, we can't rely on Validate having + * been called ahead of time, because in some situations (such as + * when loading the configuration of existing domains from disk) + * that entire phase is intentionally skipped */ + if (virDomainDefOSValidate(def, NULL) < 0) + return -1; + + /* If firmware autoselection is disabled and the loader is a ROM + * instead of a PFLASH device, then we're using BIOS and we don't + * need any information at all */ + if (!autoSelection && + (!loader || (loader && loader->type == VIR_DOMAIN_LOADER_TYPE_ROM))) { + return 0; + } + + /* For UEFI with firmware autoselection disabled, even if some of + * the information is missing we might still be able to avoid + * having to look at firmware descriptors */ + if (!autoSelection && + virDomainDefHasOldStyleROUEFI(def) && + loader->path) { + + /* For stateless firmwares, the firmware path is all we need */ + if (loader->stateless == VIR_TRISTATE_BOOL_YES) + return 0; + + /* If the path to the NVRAM file is already provided and it + * points to a non-local source, we don't need to look up any + * other information */ + if (loader->nvram && !virStorageSourceIsLocalStorage(loader->nvram)) + return 0; + + /* If we have the path to both the firmware itself and the + * corresponding NVRAM template we might still need to + * generate a path to the domain-specific NVRAM file, but + * otherwise we're good to go */ + if (loader->nvramTemplate) { + if (!loader->nvram) { + loader->nvram = virStorageSourceNew(); + loader->nvram->type = VIR_STORAGE_TYPE_FILE; + loader->nvram->format = VIR_STORAGE_FILE_RAW; + qemuDomainNVRAMPathFormat(cfg, def, &loader->nvram->path); + } + return 0; + } + } + + /* Look for the information we need in firmware descriptors */ + if ((ret = qemuFirmwareFillDomainModern(driver, def)) < 0) + return -1; + + if (ret == 1) { + /* If we haven't found any match among firmware descriptors, + * that would normally be the end of it. + * + * However, in order to handle legacy configurations + * correctly, we make another attempt at locating the missing + * information by going through the hardcoded list of + * CODE:NVRAM pairs that might have been provided at build + * time */ + if (!autoSelection) { + if (qemuFirmwareFillDomainLegacy(driver, def) < 0) + return -1; + } else { + virReportError(VIR_ERR_OPERATION_FAILED, + _("Unable to find any firmware to satisfy '%s'"), + virDomainOsDefFirmwareTypeToString(def->os.firmware)); + return -1; + } + } + + return 0; +} + + /** * qemuFirmwareGetSupported: * @machine: machine type diff --git a/src/qemu/qemu_firmware.h b/src/qemu/qemu_firmware.h index 103b6e4643..1ce0920713 100644 --- a/src/qemu/qemu_firmware.h +++ b/src/qemu/qemu_firmware.h @@ -44,8 +44,7 @@ qemuFirmwareFetchConfigs(char ***firmwares, int qemuFirmwareFillDomain(virQEMUDriver *driver, - virDomainDef *def, - unsigned int flags); + virDomainDef *def); int qemuFirmwareGetSupported(const char *machine, diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c index d4499c6f84..d302144ed1 100644 --- a/src/qemu/qemu_process.c +++ b/src/qemu/qemu_process.c @@ -4583,42 +4583,41 @@ qemuPrepareNVRAM(virQEMUDriver *driver, g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); VIR_AUTOCLOSE srcFD = -1; virDomainLoaderDef *loader = vm->def->os.loader; - const char *master_nvram_path; struct qemuPrepareNVRAMHelperData data; - if (!loader || !loader->nvram || - !virStorageSourceIsLocalStorage(loader->nvram) || - (virFileExists(loader->nvram->path) && !reset_nvram)) + if (!loader || !loader->nvram) return 0; - master_nvram_path = loader->nvramTemplate; - if (!loader->nvramTemplate) { - size_t i; - for (i = 0; i < cfg->nfirmwares; i++) { - if (STREQ(cfg->firmwares[i]->name, loader->path)) { - master_nvram_path = cfg->firmwares[i]->nvram; - break; - } + if (!virStorageSourceIsLocalStorage(loader->nvram)) { + if (!reset_nvram) { + return 0; + } else { + virReportError(VIR_ERR_OPERATION_UNSUPPORTED, "%s", + _("resetting of nvram is not supported with network backed nvram")); + return -1; } } - if (!master_nvram_path) { + if (virFileExists(loader->nvram->path) && !reset_nvram) + return 0; + + if (!loader->nvramTemplate) { virReportError(VIR_ERR_OPERATION_FAILED, _("unable to find any master var store for " "loader: %s"), loader->path); return -1; } - if ((srcFD = virFileOpenAs(master_nvram_path, O_RDONLY, + if ((srcFD = virFileOpenAs(loader->nvramTemplate, O_RDONLY, 0, -1, -1, 0)) < 0) { virReportSystemError(-srcFD, _("Failed to open file '%s'"), - master_nvram_path); + loader->nvramTemplate); return -1; } data.srcFD = srcFD; - data.srcPath = master_nvram_path; + data.srcPath = loader->nvramTemplate; if (virFileRewrite(loader->nvram->path, S_IRUSR | S_IWUSR, @@ -6751,7 +6750,7 @@ qemuProcessPrepareDomain(virQEMUDriver *driver, return -1; VIR_DEBUG("Prepare bios/uefi paths"); - if (qemuFirmwareFillDomain(driver, vm->def, flags) < 0) + if (qemuFirmwareFillDomain(driver, vm->def) < 0) return -1; if (qemuDomainInitializePflashStorageSource(vm, cfg) < 0) return -1; diff --git a/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml index b4e7e0a944..24109a11c3 100644 --- a/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/aarch64-virt-graphics.aarch64-latest.xml @@ -12,7 +12,7 @@ <os> <type arch='aarch64' machine='virt'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/some/user/nvram/path/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml b/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml index 3a7961df10..6182da4dc6 100644 --- a/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/aarch64-virt-headless.aarch64-latest.xml @@ -12,7 +12,7 @@ <os> <type arch='aarch64' machine='virt'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> - <nvram>/some/user/nvram/path/guest_VARS.fd</nvram> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/some/user/nvram/path/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml index 9d42e210c3..c7c6e23ea1 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-bios-stateless.x86_64-latest.xml @@ -4,9 +4,9 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='bios'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <loader stateless='yes'/> + <loader type='rom' stateless='yes'>/usr/share/seabios/bios-256k.bin</loader> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml index 11f95f04eb..4e0b45cccd 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-bios.x86_64-latest.xml @@ -4,8 +4,9 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='bios'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader type='rom'>/usr/share/seabios/bios-256k.bin</loader> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml index 5f4432db36..b53f39a72e 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml @@ -4,8 +4,10 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='aarch64' machine='virt-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-enrolled-keys.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-enrolled-keys.x86_64-latest.xml index 3923d1d4f2..6814784721 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-enrolled-keys.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-enrolled-keys.x86_64-latest.xml @@ -4,16 +4,15 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <firmware> - <feature enabled='yes' name='enrolled-keys'/> - <feature enabled='yes' name='secure-boot'/> - </firmware> + <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> <acpi/> + <smm state='on'/> </features> <cpu mode='custom' match='exact' check='none'> <model fallback='forbid'>qemu64</model> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml index c655d81454..6814784721 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-loader-secure.x86_64-latest.xml @@ -4,13 +4,15 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <loader secure='yes'/> + <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> <acpi/> + <smm state='on'/> </features> <cpu mode='custom' match='exact' check='none'> <model fallback='forbid'>qemu64</model> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml index 326b1d5faf..8b3853dc17 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml @@ -4,11 +4,10 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <firmware> - <feature enabled='no' name='enrolled-keys'/> - </firmware> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml index 9e8107cb4d..8b3853dc17 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-no-secboot.x86_64-latest.xml @@ -4,11 +4,10 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <firmware> - <feature enabled='no' name='secure-boot'/> - </firmware> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml index 961e97472d..cdb5d2b31a 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-file.x86_64-latest.xml @@ -4,9 +4,10 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> - <nvram type='file'> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.fd' type='file'> <source file='/path/to/guest_VARS.fd'/> </nvram> <boot dev='hd'/> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml index 446266fbf0..5a2e8715a0 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-iscsi.x86_64-latest.xml @@ -4,8 +4,9 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='network'> <source protocol='iscsi' name='iqn.2013-07.com.example:iscsi-nopool'> <host name='example.com' port='6000'/> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml index 4f0d9bef1e..208257bb5b 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram-network-nbd.x86_64-latest.xml @@ -4,8 +4,9 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> <nvram type='network'> <source protocol='nbd' name='bar'> <host name='example.org' port='6000'/> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml index 2090a770c6..f039d79ae4 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-nvram.x86_64-latest.xml @@ -4,13 +4,15 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <nvram>/path/to/guest_VARS.fd</nvram> + <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/path/to/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> <acpi/> + <smm state='on'/> </features> <cpu mode='custom' match='exact' check='none'> <model fallback='forbid'>qemu64</model> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml index 22a26554c8..6814784721 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-secboot.x86_64-latest.xml @@ -4,15 +4,15 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <firmware> - <feature enabled='yes' name='secure-boot'/> - </firmware> + <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> <acpi/> + <smm state='on'/> </features> <cpu mode='custom' match='exact' check='none'> <model fallback='forbid'>qemu64</model> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml index 7274753f9d..3a50158fba 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-smm-off.x86_64-latest.xml @@ -4,8 +4,10 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml index 143756dbff..3bc9a7341e 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-stateless.x86_64-latest.xml @@ -4,9 +4,9 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> - <loader stateless='yes'/> + <loader readonly='yes' type='pflash' stateless='yes'>/usr/share/OVMF/OVMF.sev.fd</loader> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml index 72f2ea1321..6814784721 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi.x86_64-latest.xml @@ -4,12 +4,15 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> <acpi/> + <smm state='on'/> </features> <cpu mode='custom' match='exact' check='none'> <model fallback='forbid'>qemu64</model> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml index 24e4de6fc6..34257e4f80 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-aarch64.aarch64-latest.xml @@ -7,7 +7,7 @@ <os> <type arch='aarch64' machine='virt-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> - <nvram>/path/to/guest_VARS.fd</nvram> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml index 2a36c46737..ff7793a377 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-acpi-q35.x86_64-latest.xml @@ -7,7 +7,7 @@ <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> - <nvram>/path/to/guest_VARS.fd</nvram> + <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml index 414c1d6611..1f642cd179 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-noacpi-aarch64.aarch64-latest.xml @@ -7,7 +7,7 @@ <os> <type arch='aarch64' machine='virt-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> - <nvram>/path/to/guest_VARS.fd</nvram> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml index 482d7987f6..cdb5d2b31a 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-nvram-file.x86_64-latest.xml @@ -7,7 +7,7 @@ <os> <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> - <nvram type='file'> + <nvram template='/usr/share/OVMF/OVMF_VARS.fd' type='file'> <source file='/path/to/guest_VARS.fd'/> </nvram> <boot dev='hd'/> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi-secure.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi-secure.x86_64-latest.xml index cd7de76034..aa90d3e2f2 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi-secure.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi-secure.x86_64-latest.xml @@ -7,7 +7,7 @@ <os> <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> <loader readonly='yes' secure='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.secboot.fd</loader> - <nvram>/path/to/guest_VARS.fd</nvram> + <nvram template='/usr/share/OVMF/OVMF_VARS.secboot.fd'>/path/to/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml index 97a9a6c5e6..ff6460d7b0 100644 --- a/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-manual-efi.x86_64-latest.xml @@ -7,7 +7,7 @@ <os> <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader> - <nvram>/path/to/guest_VARS.fd</nvram> + <nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/path/to/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml index 19b881ce31..2813e742d1 100644 --- a/tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml @@ -4,8 +4,10 @@ <memory unit='KiB'>1048576</memory> <currentMemory unit='KiB'>1048576</currentMemory> <vcpu placement='static'>1</vcpu> - <os firmware='efi'> + <os> <type arch='aarch64' machine='virt-6.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> <boot dev='hd'/> </os> <features> -- 2.39.1

There are no other callers remaining. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_domain.c | 9 --------- src/qemu/qemu_domain.h | 5 ----- src/qemu/qemu_firmware.c | 9 +++++++++ 3 files changed, 9 insertions(+), 14 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index fad46fec1b..f0b9e08d85 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11353,15 +11353,6 @@ qemuDomainDiskIsMissingLocalOptional(virDomainDiskDef *disk) } -void -qemuDomainNVRAMPathFormat(virQEMUDriverConfig *cfg, - virDomainDef *def, - char **path) -{ - *path = g_strdup_printf("%s/%s_VARS.fd", cfg->nvramDir, def->name); -} - - virDomainEventSuspendedDetailType qemuDomainPausedReasonToSuspendedEvent(virDomainPausedReason reason) { diff --git a/src/qemu/qemu_domain.h b/src/qemu/qemu_domain.h index 1053d1d4cb..987398486a 100644 --- a/src/qemu/qemu_domain.h +++ b/src/qemu/qemu_domain.h @@ -1049,11 +1049,6 @@ qemuDomainRunningReasonToResumeEvent(virDomainRunningReason reason); bool qemuDomainDiskIsMissingLocalOptional(virDomainDiskDef *disk); -void -qemuDomainNVRAMPathFormat(virQEMUDriverConfig *cfg, - virDomainDef *def, - char **path); - virDomainEventSuspendedDetailType qemuDomainPausedReasonToSuspendedEvent(virDomainPausedReason reason); diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 4a6adedfcb..cf854dfe19 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -979,6 +979,15 @@ qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(virDomainLoader type) } +static void +qemuDomainNVRAMPathFormat(virQEMUDriverConfig *cfg, + virDomainDef *def, + char **path) +{ + *path = g_strdup_printf("%s/%s_VARS.fd", cfg->nvramDir, def->name); +} + + #define VIR_QEMU_FIRMWARE_AMD_SEV_ES_POLICY (1 << 2) -- 2.39.1

This helper replaces qemuDomainNVRAMPathFormat() and also incorporates some common operations that all callers of that helper needed. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 49 ++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index cf854dfe19..ac1ae1e923 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -979,12 +979,32 @@ qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(virDomainLoader type) } +/** + * qemuFirmwareEnsureNVRAM: + * @def: domain definition + * @cfg: QEMU driver configuration + * + * Make sure that a source for the NVRAM file exists, possibly by + * creating it. This might involve automatically generating the + * corresponding path. + */ static void -qemuDomainNVRAMPathFormat(virQEMUDriverConfig *cfg, - virDomainDef *def, - char **path) +qemuFirmwareEnsureNVRAM(virDomainDef *def, + const virQEMUDriverConfig *cfg) { - *path = g_strdup_printf("%s/%s_VARS.fd", cfg->nvramDir, def->name); + virDomainLoaderDef *loader = def->os.loader; + + if (!loader) + return; + + if (loader->nvram) + return; + + loader->nvram = virStorageSourceNew(); + loader->nvram->type = VIR_STORAGE_TYPE_FILE; + loader->nvram->format = VIR_STORAGE_FILE_RAW; + + loader->nvram->path = g_strdup_printf("%s/%s_VARS.fd", cfg->nvramDir, def->name); } @@ -1209,12 +1229,7 @@ qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg, loader->path = g_strdup(flash->executable.filename); if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { - if (!loader->nvram) { - loader->nvram = virStorageSourceNew(); - loader->nvram->type = VIR_STORAGE_TYPE_FILE; - loader->nvram->format = VIR_STORAGE_FILE_RAW; - qemuDomainNVRAMPathFormat(cfg, def, &loader->nvram->path); - } + qemuFirmwareEnsureNVRAM(def, cfg); /* If the NVRAM is not a local path then we can't create or * reset it, so in that case filling in the nvramTemplate @@ -1417,12 +1432,7 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver, loader->readonly = VIR_TRISTATE_BOOL_YES; loader->nvramTemplate = g_strdup(cfg->firmwares[i]->nvram); - if (!loader->nvram) { - loader->nvram = virStorageSourceNew(); - loader->nvram->type = VIR_STORAGE_TYPE_FILE; - loader->nvram->format = VIR_STORAGE_FILE_RAW; - qemuDomainNVRAMPathFormat(cfg, def, &loader->nvram->path); - } + qemuFirmwareEnsureNVRAM(def, cfg); VIR_DEBUG("decided on firmware '%s' template '%s'", loader->path, NULLSTR(loader->nvramTemplate)); @@ -1574,12 +1584,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, * generate a path to the domain-specific NVRAM file, but * otherwise we're good to go */ if (loader->nvramTemplate) { - if (!loader->nvram) { - loader->nvram = virStorageSourceNew(); - loader->nvram->type = VIR_STORAGE_TYPE_FILE; - loader->nvram->format = VIR_STORAGE_FILE_RAW; - qemuDomainNVRAMPathFormat(cfg, def, &loader->nvram->path); - } + qemuFirmwareEnsureNVRAM(def, cfg); return 0; } } -- 2.39.1

Right now, this results in loader->nvram being NULL, which is reasonable: loader->nvramTemplate is stored separately, so if the <nvram> element doesn't contain a path there is really no useful information inside it. However, this is about to change, so we will find ourselves needing to hold on to loader->nvram even when no path is present. Change the firmware handling code so that such a scenario is dealt with appropriately. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/conf/domain_conf.c | 9 +++------ src/qemu/qemu_firmware.c | 7 ++++++- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 8117cff83e..30a3261dab 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16766,16 +16766,13 @@ virDomainLoaderDefParseXMLNvram(virDomainLoaderDef *loader, return -1; if (!typePresent) { - g_autofree char *path = NULL; - - if (!(path = virXMLNodeContentString(nvramNode))) + if (!(src->path = virXMLNodeContentString(nvramNode))) return -1; - if (STREQ(path, "")) - return 0; + if (STREQ(src->path, "")) + VIR_FREE(src->path); src->type = VIR_STORAGE_TYPE_FILE; - src->path = g_steal_pointer(&path); } else { if (!nvramSourceNode) return -1; diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index ac1ae1e923..4d34062ebf 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -997,9 +997,14 @@ qemuFirmwareEnsureNVRAM(virDomainDef *def, if (!loader) return; - if (loader->nvram) + /* If the source already exists and is fully specified, including + * the path, leave it alone */ + if (loader->nvram && loader->nvram->path) return; + if (loader->nvram) + virObjectUnref(loader->nvram); + loader->nvram = virStorageSourceNew(); loader->nvram->type = VIR_STORAGE_TYPE_FILE; loader->nvram->format = VIR_STORAGE_FILE_RAW; -- 2.39.1

The default is raw, which corresponds to the historical behavior and is also the only accepted value. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/conf/domain_conf.c | 72 +++++++++++++++++++++++++++++-- src/conf/domain_conf.h | 1 + src/conf/schemas/domaincommon.rng | 14 ++++++ 3 files changed, 84 insertions(+), 3 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 30a3261dab..528426511e 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -3717,7 +3717,12 @@ virDomainPanicDefFree(virDomainPanicDef *panic) virDomainLoaderDef * virDomainLoaderDefNew(void) { - return g_new0(virDomainLoaderDef, 1); + virDomainLoaderDef *def = NULL; + + def = g_new0(virDomainLoaderDef, 1); + def->format = VIR_STORAGE_FILE_RAW; + + return def; } void @@ -16751,6 +16756,7 @@ virDomainLoaderDefParseXMLNvram(virDomainLoaderDef *loader, unsigned int flags) { g_autoptr(virStorageSource) src = virStorageSourceNew(); + unsigned int format = 0; int typePresent; if (!nvramNode) @@ -16758,7 +16764,18 @@ virDomainLoaderDefParseXMLNvram(virDomainLoaderDef *loader, loader->nvramTemplate = virXMLPropString(nvramNode, "template"); - src->format = VIR_STORAGE_FILE_RAW; + if (virXMLPropEnumDefault(nvramNode, "format", + virStorageFileFormatTypeFromString, VIR_XML_PROP_NONE, + &format, VIR_STORAGE_FILE_RAW) < 0) { + return -1; + } + if (format != VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_XML_ERROR, + _("Unsupported nvram format '%s'"), + virStorageFileFormatTypeToString(format)); + return -1; + } + src->format = format; if ((typePresent = virXMLPropEnum(nvramNode, "type", virStorageTypeFromString, VIR_XML_PROP_NONE, @@ -16792,8 +16809,26 @@ static int virDomainLoaderDefParseXMLLoader(virDomainLoaderDef *loader, xmlNodePtr loaderNode) { - if (!loaderNode) + unsigned int format = 0; + + if (!loaderNode) { + /* If there is no <loader> element but the <nvram> element + * was present, copy the format from the latter to the + * former. + * + * This ensures that a configuration such as + * + * <os> + * <nvram format='foo'/> + * </os> + * + * behaves as expected, that is, results in a firmware build + * with format 'foo' being selected */ + if (loader->nvram) + loader->format = loader->nvram->format; + return 0; + } if (virXMLPropTristateBool(loaderNode, "readonly", VIR_XML_PROP_NONE, &loader->readonly) < 0) @@ -16817,6 +16852,19 @@ virDomainLoaderDefParseXMLLoader(virDomainLoaderDef *loader, &loader->stateless) < 0) return -1; + if (virXMLPropEnumDefault(loaderNode, "format", + virStorageFileFormatTypeFromString, VIR_XML_PROP_NONE, + &format, VIR_STORAGE_FILE_RAW) < 0) { + return -1; + } + if (format != VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_XML_ERROR, + _("Unsupported loader format '%s'"), + virStorageFileFormatTypeToString(format)); + return -1; + } + loader->format = format; + return 0; } @@ -16839,6 +16887,14 @@ virDomainLoaderDefParseXML(virDomainLoaderDef *loader, loaderNode) < 0) return -1; + if (loader->nvram && loader->format != loader->nvram->format) { + virReportError(VIR_ERR_XML_ERROR, + _("Format mismatch: loader.format='%s' nvram.format='%s'"), + virStorageFileFormatTypeToString(loader->format), + virStorageFileFormatTypeToString(loader->nvram->format)); + return -1; + } + return 0; } @@ -26156,6 +26212,11 @@ virDomainLoaderDefFormatNvram(virBuffer *buf, false, flags, false, false, xmlopt) < 0) return -1; } + + if (src->format != VIR_STORAGE_FILE_RAW) { + virBufferEscapeString(&attrBuf, " format='%s'", + virStorageFileFormatTypeToString(src->format)); + } } virXMLFormatElementInternal(buf, "nvram", &attrBuf, childBuf, false, childNewline); @@ -26190,6 +26251,11 @@ virDomainLoaderDefFormat(virBuffer *buf, virTristateBoolTypeToString(loader->stateless)); } + if (loader->format != VIR_STORAGE_FILE_RAW) { + virBufferEscapeString(&loaderAttrBuf, " format='%s'", + virStorageFileFormatTypeToString(loader->format)); + } + virBufferEscapeString(&loaderChildBuf, "%s", loader->path); virXMLFormatElementInternal(buf, "loader", &loaderAttrBuf, &loaderChildBuf, false, false); diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h index 96121220ea..aa5b90b82d 100644 --- a/src/conf/domain_conf.h +++ b/src/conf/domain_conf.h @@ -2312,6 +2312,7 @@ struct _virDomainLoaderDef { virDomainLoader type; virTristateBool secure; virTristateBool stateless; + virStorageFileFormat format; virStorageSource *nvram; bool newStyleNVRAM; char *nvramTemplate; /* user override of path to master nvram */ diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index a57dd212ab..150543e076 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -349,6 +349,9 @@ <ref name="virYesNo"/> </attribute> </optional> + <optional> + <ref name="pflashFormat"/> + </optional> <optional> <ref name="absFilePath"/> </optional> @@ -361,6 +364,9 @@ <ref name="absFilePath"/> </attribute> </optional> + <optional> + <ref name="pflashFormat"/> + </optional> <optional> <choice> <group> @@ -7538,6 +7544,14 @@ </element> </define> + <define name="pflashFormat"> + <attribute name="format"> + <choice> + <value>raw</value> + </choice> + </attribute> + </define> + <!-- Optional HyperV Enlightenment features --> <define name="hyperv"> <element name="hyperv"> -- 2.39.1

This ensures that, as we add support for more formats at the domain XML level, we don't accidentally cause drivers to misbehave or users to get confused. All existing drivers support the raw format, and supporting additional formats will require explicit opt-in on the driver's part. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/bhyve/bhyve_firmware.c | 7 +++++++ src/libxl/libxl_conf.c | 7 +++++++ src/qemu/qemu_firmware.c | 16 ++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/src/bhyve/bhyve_firmware.c b/src/bhyve/bhyve_firmware.c index cb1b94b4d5..ff131efa41 100644 --- a/src/bhyve/bhyve_firmware.c +++ b/src/bhyve/bhyve_firmware.c @@ -80,6 +80,13 @@ bhyveFirmwareFillDomain(bhyveConn *driver, if (!def->os.loader) def->os.loader = virDomainLoaderDefNew(); + if (def->os.loader->format != VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported loader format '%s'"), + virStorageFileFormatTypeToString(def->os.loader->format)); + return -1; + } + def->os.loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; def->os.loader->readonly = VIR_TRISTATE_BOOL_YES; diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c index 97c183ebf3..485015ef63 100644 --- a/src/libxl/libxl_conf.c +++ b/src/libxl/libxl_conf.c @@ -656,6 +656,13 @@ libxlMakeDomBuildInfo(virDomainDef *def, b_info->u.hvm.bios = LIBXL_BIOS_TYPE_OVMF; } + if (def->os.loader && def->os.loader->format != VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported loader format '%s'"), + virStorageFileFormatTypeToString(def->os.loader->format)); + return -1; + } + if (def->emulator) { if (!virFileExists(def->emulator)) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 4d34062ebf..be6d8d4519 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1545,6 +1545,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, { g_autoptr(virQEMUDriverConfig) cfg = virQEMUDriverGetConfig(driver); virDomainLoaderDef *loader = def->os.loader; + virStorageSource *nvram = loader ? loader->nvram : NULL; bool autoSelection = (def->os.firmware != VIR_DOMAIN_OS_DEF_FIRMWARE_NONE); int ret; @@ -1559,6 +1560,21 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, if (virDomainDefOSValidate(def, NULL) < 0) return -1; + if (loader && + loader->format != VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported loader format '%s'"), + virStorageFileFormatTypeToString(loader->format)); + return -1; + } + if (nvram && + nvram->format != VIR_STORAGE_FILE_RAW) { + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, + _("Unsupported nvram format '%s'"), + virStorageFileFormatTypeToString(nvram->format)); + return -1; + } + /* If firmware autoselection is disabled and the loader is a ROM * instead of a PFLASH device, then we're using BIOS and we don't * need any information at all */ -- 2.39.1

If the user has requested a specific firmware format, then all firmware builds that are not in that format should be ignored while looking for matches. The legacy hardcoded firmware list predates firmware descriptors and their "format" field, so we can safely assume that all builds listed in there are in raw format. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index be6d8d4519..a0167f860c 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1171,12 +1171,26 @@ qemuFirmwareMatchDomain(const virDomainDef *def, flash->executable.format); return false; } + if (loader && + STRNEQ(flash->executable.format, virStorageFileFormatTypeToString(loader->format))) { + VIR_DEBUG("Discarding loader with mismatching flash format '%s' != '%s'", + flash->executable.format, + virStorageFileFormatTypeToString(loader->format)); + return false; + } if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { if (STRNEQ(flash->nvram_template.format, "raw")) { VIR_DEBUG("Discarding loader with unsupported nvram template format '%s'", flash->nvram_template.format); return false; } + if (loader && loader->nvram && + STRNEQ(flash->nvram_template.format, virStorageFileFormatTypeToString(loader->nvram->format))) { + VIR_DEBUG("Discarding loader with mismatching nvram template format '%s' != '%s'", + flash->nvram_template.format, + virStorageFileFormatTypeToString(loader->nvram->format)); + return false; + } } } @@ -1424,6 +1438,12 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver, return 0; } + if (loader->format != VIR_STORAGE_FILE_RAW) { + VIR_DEBUG("Ignoring legacy entries for loader with flash format '%s'", + virStorageFileFormatTypeToString(loader->format)); + return 1; + } + for (i = 0; i < cfg->nfirmwares; i++) { virFirmware *fw = cfg->firmwares[i]; -- 2.39.1

Take the information from the descriptor and store it in the domain definition. Various things, such as the arguments passed to -blockdev and the path generated for the NVRAM file, will then be based on it. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_domain.c | 2 +- src/qemu/qemu_firmware.c | 27 +++++++++++++++++++++------ 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c index f0b9e08d85..a19a3577e1 100644 --- a/src/qemu/qemu_domain.c +++ b/src/qemu/qemu_domain.c @@ -11478,7 +11478,7 @@ qemuDomainInitializePflashStorageSource(virDomainObj *vm, pflash0 = virStorageSourceNew(); pflash0->type = VIR_STORAGE_TYPE_FILE; - pflash0->format = VIR_STORAGE_FILE_RAW; + pflash0->format = def->os.loader->format; pflash0->path = g_strdup(def->os.loader->path); pflash0->readonly = false; virTristateBoolToBool(def->os.loader->readonly, &pflash0->readonly); diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index a0167f860c..01efb60e69 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -990,9 +990,11 @@ qemuFirmwareOSInterfaceTypeFromOsDefLoaderType(virDomainLoader type) */ static void qemuFirmwareEnsureNVRAM(virDomainDef *def, - const virQEMUDriverConfig *cfg) + const virQEMUDriverConfig *cfg, + virStorageFileFormat format) { virDomainLoaderDef *loader = def->os.loader; + const char *ext = NULL; if (!loader) return; @@ -1007,9 +1009,14 @@ qemuFirmwareEnsureNVRAM(virDomainDef *def, loader->nvram = virStorageSourceNew(); loader->nvram->type = VIR_STORAGE_TYPE_FILE; - loader->nvram->format = VIR_STORAGE_FILE_RAW; + loader->nvram->format = format; - loader->nvram->path = g_strdup_printf("%s/%s_VARS.fd", cfg->nvramDir, def->name); + if (format == VIR_STORAGE_FILE_RAW) + ext = ".fd"; + + loader->nvram->path = g_strdup_printf("%s/%s_VARS%s", + cfg->nvramDir, def->name, + ext ? ext : ""); } @@ -1233,22 +1240,30 @@ qemuFirmwareEnableFeaturesModern(virQEMUDriverConfig *cfg, const qemuFirmwareMappingKernel *kernel = &fw->mapping.data.kernel; const qemuFirmwareMappingMemory *memory = &fw->mapping.data.memory; virDomainLoaderDef *loader = NULL; + virStorageFileFormat format; size_t i; switch (fw->mapping.device) { case QEMU_FIRMWARE_DEVICE_FLASH: + if ((format = virStorageFileFormatTypeFromString(flash->executable.format)) < 0) + return -1; + if (!def->os.loader) def->os.loader = virDomainLoaderDefNew(); loader = def->os.loader; loader->type = VIR_DOMAIN_LOADER_TYPE_PFLASH; loader->readonly = VIR_TRISTATE_BOOL_YES; + loader->format = format; VIR_FREE(loader->path); loader->path = g_strdup(flash->executable.filename); if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { - qemuFirmwareEnsureNVRAM(def, cfg); + if ((format = virStorageFileFormatTypeFromString(flash->nvram_template.format)) < 0) + return -1; + + qemuFirmwareEnsureNVRAM(def, cfg, format); /* If the NVRAM is not a local path then we can't create or * reset it, so in that case filling in the nvramTemplate @@ -1457,7 +1472,7 @@ qemuFirmwareFillDomainLegacy(virQEMUDriver *driver, loader->readonly = VIR_TRISTATE_BOOL_YES; loader->nvramTemplate = g_strdup(cfg->firmwares[i]->nvram); - qemuFirmwareEnsureNVRAM(def, cfg); + qemuFirmwareEnsureNVRAM(def, cfg, VIR_STORAGE_FILE_RAW); VIR_DEBUG("decided on firmware '%s' template '%s'", loader->path, NULLSTR(loader->nvramTemplate)); @@ -1625,7 +1640,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, * generate a path to the domain-specific NVRAM file, but * otherwise we're good to go */ if (loader->nvramTemplate) { - qemuFirmwareEnsureNVRAM(def, cfg); + qemuFirmwareEnsureNVRAM(def, cfg, loader->format); return 0; } } -- 2.39.1

All of the drivers will reject this value. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/conf/domain_conf.c | 6 ++++-- src/conf/schemas/domaincommon.rng | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c index 528426511e..d1c347dafc 100644 --- a/src/conf/domain_conf.c +++ b/src/conf/domain_conf.c @@ -16769,7 +16769,8 @@ virDomainLoaderDefParseXMLNvram(virDomainLoaderDef *loader, &format, VIR_STORAGE_FILE_RAW) < 0) { return -1; } - if (format != VIR_STORAGE_FILE_RAW) { + if (format != VIR_STORAGE_FILE_RAW && + format != VIR_STORAGE_FILE_QCOW2) { virReportError(VIR_ERR_XML_ERROR, _("Unsupported nvram format '%s'"), virStorageFileFormatTypeToString(format)); @@ -16857,7 +16858,8 @@ virDomainLoaderDefParseXMLLoader(virDomainLoaderDef *loader, &format, VIR_STORAGE_FILE_RAW) < 0) { return -1; } - if (format != VIR_STORAGE_FILE_RAW) { + if (format != VIR_STORAGE_FILE_RAW && + format != VIR_STORAGE_FILE_QCOW2) { virReportError(VIR_ERR_XML_ERROR, _("Unsupported loader format '%s'"), virStorageFileFormatTypeToString(format)); diff --git a/src/conf/schemas/domaincommon.rng b/src/conf/schemas/domaincommon.rng index 150543e076..f3d2a786cc 100644 --- a/src/conf/schemas/domaincommon.rng +++ b/src/conf/schemas/domaincommon.rng @@ -7548,6 +7548,7 @@ <attribute name="format"> <choice> <value>raw</value> + <value>qcow2</value> </choice> </attribute> </define> -- 2.39.1

https://bugzilla.redhat.com/show_bug.cgi?id=2161965 Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- src/qemu/qemu_firmware.c | 14 ++++++++++---- .../firmware-auto-efi-aarch64.aarch64-latest.args | 8 ++++---- .../virtio-iommu-aarch64.aarch64-latest.args | 8 ++++---- .../firmware-auto-efi-aarch64.aarch64-latest.xml | 4 ++-- .../virtio-iommu-aarch64.aarch64-latest.xml | 4 ++-- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c index 01efb60e69..9de4166772 100644 --- a/src/qemu/qemu_firmware.c +++ b/src/qemu/qemu_firmware.c @@ -1013,6 +1013,8 @@ qemuFirmwareEnsureNVRAM(virDomainDef *def, if (format == VIR_STORAGE_FILE_RAW) ext = ".fd"; + if (format == VIR_STORAGE_FILE_QCOW2) + ext = ".qcow2"; loader->nvram->path = g_strdup_printf("%s/%s_VARS%s", cfg->nvramDir, def->name, @@ -1173,7 +1175,8 @@ qemuFirmwareMatchDomain(const virDomainDef *def, } } - if (STRNEQ(flash->executable.format, "raw")) { + if (STRNEQ(flash->executable.format, "raw") && + STRNEQ(flash->executable.format, "qcow2")) { VIR_DEBUG("Discarding loader with unsupported flash format '%s'", flash->executable.format); return false; @@ -1186,7 +1189,8 @@ qemuFirmwareMatchDomain(const virDomainDef *def, return false; } if (flash->mode == QEMU_FIRMWARE_FLASH_MODE_SPLIT) { - if (STRNEQ(flash->nvram_template.format, "raw")) { + if (STRNEQ(flash->nvram_template.format, "raw") && + STRNEQ(flash->nvram_template.format, "qcow2")) { VIR_DEBUG("Discarding loader with unsupported nvram template format '%s'", flash->nvram_template.format); return false; @@ -1596,14 +1600,16 @@ qemuFirmwareFillDomain(virQEMUDriver *driver, return -1; if (loader && - loader->format != VIR_STORAGE_FILE_RAW) { + loader->format != VIR_STORAGE_FILE_RAW && + loader->format != VIR_STORAGE_FILE_QCOW2) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported loader format '%s'"), virStorageFileFormatTypeToString(loader->format)); return -1; } if (nvram && - nvram->format != VIR_STORAGE_FILE_RAW) { + nvram->format != VIR_STORAGE_FILE_RAW && + nvram->format != VIR_STORAGE_FILE_QCOW2) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, _("Unsupported nvram format '%s'"), virStorageFileFormatTypeToString(nvram->format)); diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.aarch64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.aarch64-latest.args index 05b27e84e8..8ebd1b8a26 100644 --- a/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.aarch64-latest.args +++ b/tests/qemuxml2argvdata/firmware-auto-efi-aarch64.aarch64-latest.args @@ -10,10 +10,10 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -name guest=guest,debug-threads=on \ -S \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ --blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.qcow2","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"qcow2","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"qcow2","file":"libvirt-pflash1-storage"}' \ -machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu cortex-a15 \ diff --git a/tests/qemuxml2argvdata/virtio-iommu-aarch64.aarch64-latest.args b/tests/qemuxml2argvdata/virtio-iommu-aarch64.aarch64-latest.args index a88078818d..4d2df70378 100644 --- a/tests/qemuxml2argvdata/virtio-iommu-aarch64.aarch64-latest.args +++ b/tests/qemuxml2argvdata/virtio-iommu-aarch64.aarch64-latest.args @@ -10,10 +10,10 @@ XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ -name guest=guest,debug-threads=on \ -S \ -object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ --blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ --blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ --blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.qcow2","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"qcow2","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"qcow2","file":"libvirt-pflash1-storage"}' \ -machine virt-6.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ -accel tcg \ -cpu cortex-a15 \ diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml index b53f39a72e..2eb5ab05fe 100644 --- a/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-aarch64.aarch64-latest.xml @@ -6,8 +6,8 @@ <vcpu placement='static'>1</vcpu> <os> <type arch='aarch64' machine='virt-4.0'>hvm</type> - <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> - <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/AAVMF/AAVMF_CODE.qcow2</loader> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram> <boot dev='hd'/> </os> <features> diff --git a/tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml b/tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml index 2813e742d1..9e4f81fde8 100644 --- a/tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml +++ b/tests/qemuxml2xmloutdata/virtio-iommu-aarch64.aarch64-latest.xml @@ -6,8 +6,8 @@ <vcpu placement='static'>1</vcpu> <os> <type arch='aarch64' machine='virt-6.0'>hvm</type> - <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> - <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/AAVMF/AAVMF_CODE.qcow2</loader> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram> <boot dev='hd'/> </os> <features> -- 2.39.1

These cover various scenarios related to firmware formats, specifically ensuring that all the ways in which the user can ask for a non-default format to be used work correctly. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- ...efi-format-loader-qcow2.x86_64-latest.args | 37 +++++++++++++++++++ .../firmware-auto-efi-format-loader-qcow2.xml | 18 +++++++++ ...-efi-format-loader-raw.aarch64-latest.args | 35 ++++++++++++++++++ .../firmware-auto-efi-format-loader-raw.xml | 18 +++++++++ ...auto-efi-format-mismatch.x86_64-latest.err | 1 + .../firmware-auto-efi-format-mismatch.xml | 19 ++++++++++ ...nvram-qcow2-network-nbd.x86_64-latest.args | 35 ++++++++++++++++++ ...uto-efi-format-nvram-qcow2-network-nbd.xml | 22 +++++++++++ ...format-nvram-qcow2-path.x86_64-latest.args | 37 +++++++++++++++++++ ...mware-auto-efi-format-nvram-qcow2-path.xml | 18 +++++++++ ...-efi-format-nvram-qcow2.x86_64-latest.args | 37 +++++++++++++++++++ .../firmware-auto-efi-format-nvram-qcow2.xml | 18 +++++++++ tests/qemuxml2argvtest.c | 7 ++++ ...-efi-format-loader-qcow2.x86_64-latest.xml | 36 ++++++++++++++++++ ...o-efi-format-loader-raw.aarch64-latest.xml | 31 ++++++++++++++++ ...-nvram-qcow2-network-nbd.x86_64-latest.xml | 36 ++++++++++++++++++ ...-format-nvram-qcow2-path.x86_64-latest.xml | 36 ++++++++++++++++++ ...o-efi-format-nvram-qcow2.x86_64-latest.xml | 36 ++++++++++++++++++ tests/qemuxml2xmltest.c | 6 +++ 19 files changed, 483 insertions(+) create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2.xml create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw.aarch64-latest.args create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw.xml create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.xml create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-path.xml create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw.aarch64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.xml create mode 100644 tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.xml diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.args new file mode 100644 index 0000000000..cbd837d2bd --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.args @@ -0,0 +1,37 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.qcow2","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"qcow2","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"qcow2","file":"libvirt-pflash1-storage"}' \ +-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel kvm \ +-cpu qemu64 \ +-m 1024 \ +-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/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2.xml new file mode 100644 index 0000000000..4d4bea8ff8 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-qcow2.xml @@ -0,0 +1,18 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader format='qcow2'/> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw.aarch64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw.aarch64-latest.args new file mode 100644 index 0000000000..05b27e84e8 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw.aarch64-latest.args @@ -0,0 +1,35 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/domain--1-guest/.config \ +/usr/bin/qemu-system-aarch64 \ +-name guest=guest,debug-threads=on \ +-S \ +-object '{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/AAVMF/AAVMF_CODE.fd","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"raw","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.fd","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"raw","file":"libvirt-pflash1-storage"}' \ +-machine virt-4.0,usb=off,gic-version=2,dump-guest-core=off,memory-backend=mach-virt.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel tcg \ +-cpu cortex-a15 \ +-m 1024 \ +-object '{"qom-type":"memory-backend-ram","id":"mach-virt.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"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw.xml new file mode 100644 index 0000000000..ef4cc6d363 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw.xml @@ -0,0 +1,18 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='aarch64' machine='virt-4.0'>hvm</type> + <loader format='raw'/> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err new file mode 100644 index 0000000000..abfdfc4357 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.x86_64-latest.err @@ -0,0 +1 @@ +XML error: Format mismatch: loader.format='qcow2' nvram.format='raw' diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml new file mode 100644 index 0000000000..6613d9e9a9 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-mismatch.xml @@ -0,0 +1,19 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader format='qcow2'/> + <nvram>/path/to/guest_VARS.fd</nvram> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.args new file mode 100644 index 0000000000..b4b82f0981 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.args @@ -0,0 +1,35 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.qcow2","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"qcow2","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"nbd","server":{"type":"inet","host":"example.org","port":"6000"},"export":"bar","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"qcow2","file":"libvirt-pflash1-storage"}' \ +-machine pc-i440fx-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel tcg \ +-cpu qemu64 \ +-m 1024 \ +-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"}' \ +-sandbox on,obsolete=deny,elevateprivileges=deny,spawn=deny,resourcecontrol=deny \ +-msg timestamp=on diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.xml new file mode 100644 index 0000000000..0028bde4d7 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.xml @@ -0,0 +1,22 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <nvram type='network' format='qcow2'> + <source protocol='nbd' name='bar'> + <host name='example.org' port='6000'/> + </source> + </nvram> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args new file mode 100644 index 0000000000..a99e09cf38 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args @@ -0,0 +1,37 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.qcow2","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"qcow2","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"file","filename":"/path/to/guest_VARS.qcow2","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"qcow2","file":"libvirt-pflash1-storage"}' \ +-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel kvm \ +-cpu qemu64 \ +-m 1024 \ +-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/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-path.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-path.xml new file mode 100644 index 0000000000..fe67aa8edf --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2-path.xml @@ -0,0 +1,18 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <nvram format='qcow2'>/path/to/guest_VARS.qcow2</nvram> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args new file mode 100644 index 0000000000..cbd837d2bd --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args @@ -0,0 +1,37 @@ +LC_ALL=C \ +PATH=/bin \ +HOME=/tmp/lib/domain--1-guest \ +USER=test \ +LOGNAME=test \ +XDG_DATA_HOME=/tmp/lib/domain--1-guest/.local/share \ +XDG_CACHE_HOME=/tmp/lib/domain--1-guest/.cache \ +XDG_CONFIG_HOME=/tmp/lib/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":"/tmp/lib/domain--1-guest/master-key.aes"}' \ +-blockdev '{"driver":"file","filename":"/usr/share/OVMF/OVMF_CODE.qcow2","node-name":"libvirt-pflash0-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash0-format","read-only":true,"driver":"qcow2","file":"libvirt-pflash0-storage"}' \ +-blockdev '{"driver":"file","filename":"/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2","node-name":"libvirt-pflash1-storage","auto-read-only":true,"discard":"unmap"}' \ +-blockdev '{"node-name":"libvirt-pflash1-format","read-only":false,"driver":"qcow2","file":"libvirt-pflash1-storage"}' \ +-machine pc-q35-4.0,usb=off,dump-guest-core=off,memory-backend=pc.ram,pflash0=libvirt-pflash0-format,pflash1=libvirt-pflash1-format \ +-accel kvm \ +-cpu qemu64 \ +-m 1024 \ +-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/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2.xml b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2.xml new file mode 100644 index 0000000000..6da8374ec6 --- /dev/null +++ b/tests/qemuxml2argvdata/firmware-auto-efi-format-nvram-qcow2.xml @@ -0,0 +1,18 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <vcpu placement='static'>1</vcpu> + <os firmware='efi'> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <nvram format='qcow2'/> + </os> + <features> + <acpi/> + </features> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' model='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2argvtest.c b/tests/qemuxml2argvtest.c index 812e87ea90..5c9bd30dc5 100644 --- a/tests/qemuxml2argvtest.c +++ b/tests/qemuxml2argvtest.c @@ -1168,6 +1168,13 @@ mymain(void) DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-nbd"); DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-iscsi"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-format-loader-qcow2"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-path"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-network-nbd"); + DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-format-loader-raw", "aarch64"); + DO_TEST_CAPS_LATEST_PARSE_ERROR("firmware-auto-efi-format-mismatch"); + DO_TEST_NOCAPS("clock-utc"); DO_TEST_NOCAPS("clock-localtime"); DO_TEST_NOCAPS("clock-localtime-basis-localtime"); diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.xml new file mode 100644 index 0000000000..00568560b6 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-qcow2.x86_64-latest.xml @@ -0,0 +1,36 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/OVMF/OVMF_CODE.qcow2</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw.aarch64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw.aarch64-latest.xml new file mode 100644 index 0000000000..b53f39a72e --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-loader-raw.aarch64-latest.xml @@ -0,0 +1,31 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='aarch64' machine='virt-4.0'>hvm</type> + <loader readonly='yes' type='pflash'>/usr/share/AAVMF/AAVMF_CODE.fd</loader> + <nvram template='/usr/share/AAVMF/AAVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/guest_VARS.fd</nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + <gic version='2'/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>cortex-a15</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-aarch64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pcie-root'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.xml new file mode 100644 index 0000000000..f3ab8f6744 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-network-nbd.x86_64-latest.xml @@ -0,0 +1,36 @@ +<domain type='qemu'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-i440fx-4.0'>hvm</type> + <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/OVMF/OVMF_CODE.qcow2</loader> + <nvram type='network' format='qcow2'> + <source protocol='nbd' name='bar'> + <host name='example.org' port='6000'/> + </source> + </nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='pci' index='0' model='pci-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.xml new file mode 100644 index 0000000000..c07a29aabd --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.xml @@ -0,0 +1,36 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/OVMF/OVMF_CODE.qcow2</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.qcow2' format='qcow2'>/path/to/guest_VARS.qcow2</nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.xml b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.xml new file mode 100644 index 0000000000..00568560b6 --- /dev/null +++ b/tests/qemuxml2xmloutdata/firmware-auto-efi-format-nvram-qcow2.x86_64-latest.xml @@ -0,0 +1,36 @@ +<domain type='kvm'> + <name>guest</name> + <uuid>63840878-0deb-4095-97e6-fc444d9bc9fa</uuid> + <memory unit='KiB'>1048576</memory> + <currentMemory unit='KiB'>1048576</currentMemory> + <vcpu placement='static'>1</vcpu> + <os> + <type arch='x86_64' machine='pc-q35-4.0'>hvm</type> + <loader readonly='yes' type='pflash' format='qcow2'>/usr/share/OVMF/OVMF_CODE.qcow2</loader> + <nvram template='/usr/share/OVMF/OVMF_VARS.qcow2' format='qcow2'>/var/lib/libvirt/qemu/nvram/guest_VARS.qcow2</nvram> + <boot dev='hd'/> + </os> + <features> + <acpi/> + </features> + <cpu mode='custom' match='exact' check='none'> + <model fallback='forbid'>qemu64</model> + </cpu> + <clock offset='utc'/> + <on_poweroff>destroy</on_poweroff> + <on_reboot>restart</on_reboot> + <on_crash>destroy</on_crash> + <devices> + <emulator>/usr/bin/qemu-system-x86_64</emulator> + <controller type='usb' index='0' model='none'/> + <controller type='sata' index='0'> + <address type='pci' domain='0x0000' bus='0x00' slot='0x1f' function='0x2'/> + </controller> + <controller type='pci' index='0' model='pcie-root'/> + <input type='mouse' bus='ps2'/> + <input type='keyboard' bus='ps2'/> + <audio id='1' type='none'/> + <watchdog model='itco' action='reset'/> + <memballoon model='none'/> + </devices> +</domain> diff --git a/tests/qemuxml2xmltest.c b/tests/qemuxml2xmltest.c index d95e3c67e5..12b9d5a4c2 100644 --- a/tests/qemuxml2xmltest.c +++ b/tests/qemuxml2xmltest.c @@ -972,6 +972,12 @@ mymain(void) DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-nbd"); DO_TEST_CAPS_LATEST("firmware-auto-efi-nvram-network-iscsi"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-format-loader-qcow2"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-path"); + DO_TEST_CAPS_LATEST("firmware-auto-efi-format-nvram-qcow2-network-nbd"); + DO_TEST_CAPS_ARCH_LATEST("firmware-auto-efi-format-loader-raw", "aarch64"); + DO_TEST_NOCAPS("tap-vhost"); DO_TEST_NOCAPS("tap-vhost-incorrect"); DO_TEST("shmem", QEMU_CAPS_DEVICE_IVSHMEM); -- 2.39.1

Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- docs/formatdomain.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/formatdomain.rst b/docs/formatdomain.rst index 8407bab1ba..6122f30b76 100644 --- a/docs/formatdomain.rst +++ b/docs/formatdomain.rst @@ -257,6 +257,11 @@ harddisk, cdrom, network) determining where to obtain/find the boot image. any config changes on shutdown. The ``stateless`` flag (:since:`Since 8.6.0`) can be used to control this behaviour, when set to ``yes`` NVRAM will never be created. + + When firmware autoselection is enabled, the ``format`` attribute can be + used to tell libvirt to only consider firmware builds that are in a + specific format. Supported values are ``raw`` and ``qcow2``. + :since:`Since 9.1.0 (QEMU only)` ``nvram`` Some UEFI firmwares may want to use a non-volatile memory to store some variables. In the host, this is represented as a file and the absolute path @@ -276,6 +281,10 @@ harddisk, cdrom, network) determining where to obtain/find the boot image. **Note:** ``network`` backed NVRAM the variables are not instantiated from the ``template`` and it's user's responsibility to provide a valid NVRAM image. + This element supports a ``format`` attribute, which has the same semantics + as the attribute of the same name for the ``<loader>`` element. + :since:`Since 9.1.0 (QEMU only)` + It is not valid to provide this element if the loader is marked as stateless. -- 2.39.1

Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- NEWS.rst | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/NEWS.rst b/NEWS.rst index 4625a838f8..577e1502b5 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -41,6 +41,16 @@ v9.1.0 (unreleased) allowing installation of a modular daemon configuration without the traditional monolithic libvirtd. + * qemu: Make firmware selection persistent + + Up until now, firmware autoselection has been performed at domain startup + time: as a result, changes to the JSON firmware descriptors present on the + system could have translated to a different firmware being chosen for + subsequent startups of the same domain, potentially rendering it unbootable + or lowering the security guarantees. Firmware selection now happens once, + when the domain is defined, and its results are stored in the domain XML + to be reused, unchanged, for all subsequent boots. + * **Bug fixes** * QEMU: iTCO watchdog made operational -- 2.39.1

Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- NEWS.rst | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/NEWS.rst b/NEWS.rst index 577e1502b5..d9b923dabb 100644 --- a/NEWS.rst +++ b/NEWS.rst @@ -33,6 +33,12 @@ v9.1.0 (unreleased) Support crypto device(virtio crypto only), also add support for QEMU with backend ``builtin`` and ``lkcf``. + * qemu: Add support for QCOW2 formatted firmware + + This type of firmware can be picked up either automatically, if the + corresponding JSON descriptor has the highest priority, or manually by + using ``<loader format='qcow2'/>`` in the domain XML. + * **Improvements** * RPM packaging changes -- 2.39.1

On 2/15/23 11:41, Andrea Bolognani wrote:
Motivation for these changes can be found in the commit message for patch 20 ("qemu: Move firmware selection from startup to postparse") as well as [RHBZ#2161965].
Patches 01-17 are preparatory fixes/improvements/cleanups.
Patches 19-20 move firmware selection from startup to postparse, and patches 21-22 clean up a bit after that change. Patch 20 in particular is significantly larger than I would have liked, but I haven't been able to come up with a way to split it while still preserving bisectability and making things clearer instead of complicating them. If anyone has ideas in this regard, please let me know!
Patches 23-27 add support for choosing a firmware format, but are effectively no-op because formats other than raw are still rejected at this point.
Patches 28-30 add support for QCOW2 format firmware in the QEMU driver.
Patches 31-33 document the changes.
[RHBZ#2161965] https://bugzilla.redhat.com/show_bug.cgi?id=2161965
Andrea Bolognani (33): docs: Fix documentation for loader.stateless attribute tests: Set nvramDir in qemuxml2xmltest tests: Rename firmware-manual-efi-rw* tests tests: Use x86_64 for all x86 firmware tests tests: Move firmware tests to CAPS_LATEST tests: Unify input files for firmware tests tests: Enable qemuxml2xml for more firmware tests tests: Add more firmware tests qemu: Introduce qemuDomainDefMachinePostParse() qemu: Introduce qemuDomainDefBootPostParse() conf: Introduce virDomainLoaderDefParseXMLLoader() conf: introduce virDomainLoaderDefNew() qemu: Add convenience local variables qemu: Only fill nvramTemplate for local sources qemu: Clear os.firmwareFeatures after autoselection qemu: Don't pick firmware that requires SMM when smm=off qemu: Don't pick firmware with unsupported format tests: Add descriptors for QCOW2 format firmware builds conf: Export virDomainDefOSValidate() qemu: Move firmware selection from startup to postparse qemu: Move qemuDomainNVRAMPathFormat() to qemu_firmware qemu: Introduce qemuFirmwareEnsureNVRAM() conf: Change handling for empty NVRAM path conf: Parse firmware format drivers: Reject unsupported firmware formats qemu: Filter firmwares based on format qemu: Propagate firmware format conf: Accept QCOW2 firmware format qemu: Add support for QCOW2 format firmware tests: Add more firmware tests docs: Document firmware format attribute news: Document changes to firmware autoselection news: Document support for QCOW2 format firmware
160 files changed, 1408 insertions(+), 990 deletions(-)
You'll need to rebase these, sorry for late review. Reviewed-by: Michal Privoznik <mprivozn@redhat.com> Michal
participants (2)
-
Andrea Bolognani
-
Michal Prívozník