[libvirt PATCH 00/21] qemu: Various fixes to firmware selection

Andrea Bolognani posted 21 patches 9 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20230810165038.169700-1-abologna@redhat.com
...irmware-auto-efi-secboot.x86_64-latest.xml |   4 +-
...irmware-auto-efi-smm-off.x86_64-latest.xml |   4 +-
...mware-auto-efi-stateless.x86_64-latest.xml |   2 +-
.../firmware-auto-efi.x86_64-latest.xml       |   4 +-
...i-aarch64-legacy-paths.aarch64-latest.xml} |   6 +-
...manual-efi-acpi-aarch64.aarch64-latest.xml |   4 +-
...ware-manual-efi-acpi-q35.x86_64-latest.xml |   4 +-
...ware-manual-efi-features.x86_64-latest.xml |   4 +-
...loader-path-nonstandard.x86_64-latest.xml} |  11 +-
...manual-efi-loader-secure.x86_64-latest.xml |   4 +-
...olled-keys-legacy-paths.x86_64-latest.xml} |   8 +-
...ual-efi-no-enrolled-keys.x86_64-latest.xml |   4 +-
...no-secboot-legacy-paths.x86_64-latest.xml} |   8 +-
...re-manual-efi-no-secboot.x86_64-latest.xml |   4 +-
...nual-efi-noacpi-aarch64.aarch64-latest.xml |   4 +-
...re-manual-efi-nvram-file.x86_64-latest.xml |   4 +-
...-efi-nvram-network-iscsi.x86_64-latest.xml |   2 +-
...al-efi-nvram-network-nbd.x86_64-latest.xml |   2 +-
...am-template-nonstandard.x86_64-latest.xml} |   9 +-
...anual-efi-nvram-template.x86_64-latest.xml |   4 +-
...ual-efi-rw-legacy-paths.x86_64-latest.xml} |  10 +-
...ual-efi-rw-modern-paths.x86_64-latest.xml} |  10 +-
...fi-secboot-legacy-paths.x86_64-latest.xml} |   8 +-
...mware-manual-efi-secboot.x86_64-latest.xml |   4 +-
...are-manual-efi-stateless.x86_64-latest.xml |   2 +-
.../firmware-manual-efi.x86_64-latest.xml     |   4 +-
...f-aarch64-virt-headless.aarch64-latest.xml |  10 +-
.../hvf-x86_64-q35-headless.x86_64-latest.xml |  11 +-
...-nvdimm-ppc64-abi-update.ppc64-latest.xml} |   0
...-ppc64-nonuma-abi-update.ppc64-latest.xml} |   0
.../pvpanic-pci-aarch64.aarch64-latest.xml    |   4 +-
...-pci-no-address-aarch64.aarch64-latest.xml |   4 +-
.../virtio-iommu-aarch64.aarch64-latest.xml   |   4 +-
tests/qemuxml2xmltest.c                       |  30 +++-
196 files changed, 655 insertions(+), 491 deletions(-)
create mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/20-bios.json
delete mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/40-ovmf-sb-keys.json
create mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/59-combined.json
rename tests/qemufirmwaredata/etc/qemu/firmware/{42-masked.json => 92-masked.json} (100%)
rename tests/qemufirmwaredata/out/usr/share/qemu/firmware/{61-ovmf.json => 60-edk2-ovmf-x64-amdsev.json} (60%)
copy tests/qemufirmwaredata/{usr/share/qemu/firmware/45-ovmf-sev-stateless.json => out/usr/share/qemu/firmware/60-edk2-ovmf-x64-inteltdx.json} (63%)
copy tests/qemufirmwaredata/usr/share/qemu/firmware/{50-ovmf-sb-keys.json => 30-edk2-ovmf-4m-qcow2-x64-sb-enrolled.json} (70%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{50-ovmf-sb-keys.json => 31-edk2-ovmf-2m-raw-x64-sb-enrolled.json} (78%)
rename tests/qemufirmwaredata/{out/usr/share/qemu/firmware/50-ovmf-sb-keys.json => usr/share/qemu/firmware/40-edk2-ovmf-4m-qcow2-x64-sb.json} (59%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{60-ovmf-sb.json => 41-edk2-ovmf-2m-raw-x64-sb.json} (77%)
copy tests/qemufirmwaredata/usr/share/qemu/firmware/{66-aavmf-qcow2.json => 50-edk2-aarch64-qcow2.json} (53%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{65-ovmf-qcow2.json => 50-edk2-ovmf-4m-qcow2-x64-nosb.json} (68%)
create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/50-edk2-ovmf-x64-microvm.json
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{70-aavmf.json => 51-edk2-aarch64-raw.json} (64%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{61-ovmf.json => 51-edk2-ovmf-2m-raw-x64-nosb.json} (69%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{66-aavmf-qcow2.json => 52-edk2-aarch64-verbose-qcow2.json} (53%)
rename tests/qemufirmwaredata/{out/usr/share/qemu/firmware/70-aavmf.json => usr/share/qemu/firmware/53-edk2-aarch64-verbose-raw.json} (57%)
copy tests/qemufirmwaredata/usr/share/qemu/firmware/{45-ovmf-sev-stateless.json => 60-edk2-ovmf-x64-amdsev.json} (73%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{45-ovmf-sev-stateless.json => 60-edk2-ovmf-x64-inteltdx.json} (66%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{55-ovmf-sb-combined.json => 90-combined.json} (85%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{40-bios.json => 91-bios.json} (87%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{42-masked.json => 92-masked.json} (100%)
mode change 100644 => 120000 tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml
copy tests/qemuxml2argvdata/{firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args => firmware-auto-efi-abi-update.x86_64-latest.args} (80%)
create mode 120000 tests/qemuxml2argvdata/firmware-auto-efi-abi-update.xml
copy tests/qemuxml2argvdata/{firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args => firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.args} (80%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-format-mismatch.xml => firmware-auto-efi-format-loader-qcow2-nvram-path.xml} (91%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-format-loader-raw.aarch64-latest.args => firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.args} (84%)
create mode 120000 tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw-abi-update.xml
copy tests/qemuxml2argvdata/{firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args => firmware-auto-efi-loader-secure-abi-update.x86_64-latest.args} (80%)
create mode 120000 tests/qemuxml2argvdata/firmware-auto-efi-loader-secure-abi-update.xml
rename tests/qemuxml2argvdata/{firmware-auto-efi-nvram.x86_64-latest.args => firmware-auto-efi-nvram-path.x86_64-latest.args} (91%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-nvram-path.xml} (100%)
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-nvram-template-nonstandard.x86_64-latest.err
copy tests/qemuxml2argvdata/{firmware-auto-efi-format-mismatch.xml => firmware-auto-efi-nvram-template-nonstandard.xml} (77%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-enrolled-keys.x86_64-latest.args => firmware-auto-efi-nvram-template.x86_64-latest.args} (91%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-nvram-template.xml} (88%)
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.err
create mode 120000 tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.xml
create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.err
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-rw.xml} (91%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-aarch64.aarch64-latest.args => firmware-manual-efi-aarch64-legacy-paths.aarch64-latest.args} (100%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-aarch64.xml => firmware-manual-efi-aarch64-legacy-paths.xml} (90%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-path.x86_64-latest.args => firmware-manual-efi-loader-path-nonstandard.x86_64-latest.args} (90%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.xml => firmware-manual-efi-loader-path-nonstandard.xml} (78%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-manual-efi-no-enrolled-keys-legacy-paths.x86_64-latest.args} (99%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-loader-secure.xml => firmware-manual-efi-no-enrolled-keys-legacy-paths.xml} (91%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-path.x86_64-latest.args => firmware-manual-efi-no-secboot-legacy-paths.x86_64-latest.args} (99%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.xml => firmware-manual-efi-no-secboot-legacy-paths.xml} (90%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-path.x86_64-latest.args => firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.args} (91%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-format-mismatch.xml => firmware-manual-efi-nvram-template-nonstandard.xml} (75%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-stateless.x86_64-latest.args => firmware-manual-efi-rw-legacy-paths.x86_64-latest.args} (81%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-manual-efi-rw-legacy-paths.xml} (79%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-stateless.x86_64-latest.args => firmware-manual-efi-rw-modern-paths.x86_64-latest.args} (80%)
rename tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-manual-efi-rw-modern-paths.xml} (78%)
copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-manual-efi-secboot-legacy-paths.x86_64-latest.args} (99%)
copy tests/qemuxml2argvdata/{firmware-manual-efi-loader-secure.xml => firmware-manual-efi-secboot-legacy-paths.xml} (90%)
rename tests/qemuxml2argvdata/{memory-hotplug-nvdimm-ppc64-abi-update.args => memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.args} (100%)
rename tests/qemuxml2argvdata/{memory-hotplug-ppc64-nonuma-abi-update.args => memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.args} (100%)
rename tests/qemuxml2argvdata/{ppc64-usb-controller-qemu-xhci.args => ppc64-usb-controller-qemu-xhci.ppc64-latest.args} (100%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-enrolled-keys.x86_64-latest.xml => firmware-auto-efi-abi-update.x86_64-latest.xml} (82%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-enrolled-keys.x86_64-latest.xml => firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.xml} (83%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.xml} (81%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-enrolled-keys.x86_64-latest.xml => firmware-auto-efi-loader-secure-abi-update.x86_64-latest.xml} (82%)
rename tests/qemuxml2xmloutdata/{firmware-auto-efi-nvram.x86_64-latest.xml => firmware-auto-efi-nvram-path.x86_64-latest.xml} (90%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-auto-efi-nvram-template-nonstandard.x86_64-latest.xml} (83%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml => firmware-auto-efi-nvram-template.x86_64-latest.xml} (90%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-auto-efi-rw.x86_64-latest.xml} (83%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-efi-aarch64-legacy-paths.aarch64-latest.xml} (87%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-manual-efi-loader-path-nonstandard.x86_64-latest.xml} (80%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml => firmware-manual-efi-no-enrolled-keys-legacy-paths.x86_64-latest.xml} (88%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-path.x86_64-latest.xml => firmware-manual-efi-no-secboot-legacy-paths.x86_64-latest.xml} (87%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.xml} (81%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-manual-efi-rw-legacy-paths.x86_64-latest.xml} (80%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-manual-efi-rw-modern-paths.x86_64-latest.xml} (80%)
copy tests/qemuxml2xmloutdata/{firmware-auto-efi-secboot.x86_64-latest.xml => firmware-manual-efi-secboot-legacy-paths.x86_64-latest.xml} (88%)
rename tests/qemuxml2xmloutdata/{memory-hotplug-nvdimm-ppc64-abi-update.xml => memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.xml} (100%)
rename tests/qemuxml2xmloutdata/{memory-hotplug-ppc64-nonuma-abi-update.xml => memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.xml} (100%)
[libvirt PATCH 00/21] qemu: Various fixes to firmware selection
Posted by Andrea Bolognani 9 months ago
Also available from GitLab:

  $ git fetch https://gitlab.com/abologna/libvirt.git firmware

Patch 11/21 is kind of an unreviewable mess, but it can't really be
split into more reasonably-sized pieces while preserving
bisectability. I have pushed an alternative version that should make
things a bit less painful, grab it with:

  $ git fetch https://gitlab.com/abologna/libvirt.git firmware-reviewable

Details are included in the various patches or in the relevant
issues:

  https://bugzilla.redhat.com/show_bug.cgi?id=2196178
  https://gitlab.com/libvirt/libvirt/-/issues/500

but the tl;dr is that the changes made to firmware selection in
libvirt 9.2.0 have unfortunately introduced a number of regression,
which this series addresses.

The first few patches are preparatory / tangential cleanups, while
the last few implement quality of life improvements rather than
actual fixes. They all touch the same areas, so it seemed reasonable
to bundle them.

Test pipeline: https://gitlab.com/abologna/libvirt/-/pipelines/962320409

Andrea Bolognani (21):
  tests: Use DO_TEST_CAPS_*_ABI_UPDATE() for ppc64
  tests: Switch to firmware autoselection for hvf
  tests: Use virt-4.0 machine type for aarch64
  tests: Consistently use /path/to/guest_VARS.fd
  tests: Turn abi-update.xml into a symlink
  tests: Rename firmware-auto-efi-nvram-path
  qemu: Fix return value for qemuFirmwareFillDomainLegacy()
  qemu: Fix lookup against stateless/combined pflash
  tests: Add some more DO_TEST*ABI_UPDATE* macros
  tests: Add more tests for firmware selection
  tests: Update firmware descriptor files
  tests: Drop tags from BIOS firmware descriptor
  tests: Include microvm in firmwaretest
  qemu: Don't overwrite NVRAM template for legacy firmware
  qemu: Generate NVRAM path in more cases
  qemu: Filter firmware based on loader.readonly
  qemu: Match NVRAM template extension for new domains
  conf: Don't default to raw format for loader/NVRAM
  tests: Rename firmware-auto-efi-format-loader-qcow2-nvram-path
  tests: Reintroduce firmware-auto-efi-format-mismatch
  NEWS: Mention fixes to firmware selection

 NEWS.rst                                      |   6 +
 src/bhyve/bhyve_firmware.c                    |   3 +
 src/conf/domain_conf.c                        |  21 ++-
 src/libxl/libxl_conf.c                        |  15 +-
 src/libxl/xen_xl.c                            |   2 +
 src/libxl/xen_xm.c                            |   1 +
 src/qemu/qemu_domain.c                        |   2 +-
 src/qemu/qemu_firmware.c                      | 158 ++++++++++++++----
 src/qemu/qemu_firmware.h                      |   3 +-
 src/qemu/qemu_process.c                       |   2 +-
 .../etc/qemu/firmware/20-bios.json            |   1 +
 .../etc/qemu/firmware/40-ovmf-sb-keys.json    |   1 -
 .../etc/qemu/firmware/59-combined.json        |   1 +
 .../{42-masked.json => 92-masked.json}        |   0
 ...ovmf.json => 60-edk2-ovmf-x64-amdsev.json} |  11 +-
 .../firmware/60-edk2-ovmf-x64-inteltdx.json}  |   9 +-
 ...0-edk2-ovmf-4m-qcow2-x64-sb-enrolled.json} |  10 +-
 ... 31-edk2-ovmf-2m-raw-x64-sb-enrolled.json} |   6 +-
 .../40-edk2-ovmf-4m-qcow2-x64-sb.json}        |  16 +-
 ...b.json => 41-edk2-ovmf-2m-raw-x64-sb.json} |   7 +-
 ...-qcow2.json => 50-edk2-aarch64-qcow2.json} |  14 +-
 ...on => 50-edk2-ovmf-4m-qcow2-x64-nosb.json} |   9 +-
 .../firmware/50-edk2-ovmf-x64-microvm.json    |  22 +++
 ...70-aavmf.json => 51-edk2-aarch64-raw.json} |  11 +-
 ...json => 51-edk2-ovmf-2m-raw-x64-nosb.json} |   8 +-
 ...son => 52-edk2-aarch64-verbose-qcow2.json} |  16 +-
 .../53-edk2-aarch64-verbose-raw.json}         |  10 +-
 ...less.json => 60-edk2-ovmf-x64-amdsev.json} |   6 +-
 ...ss.json => 60-edk2-ovmf-x64-inteltdx.json} |   8 +-
 ...ovmf-sb-combined.json => 90-combined.json} |   4 +-
 .../firmware/{40-bios.json => 91-bios.json}   |   3 -
 .../{42-masked.json => 92-masked.json}        |   0
 tests/qemufirmwaretest.c                      |  79 +++++----
 .../aarch64-virt-graphics.aarch64-latest.args |   6 +-
 .../aarch64-virt-graphics.xml                 |   6 +-
 .../aarch64-virt-headless.aarch64-latest.args |   6 +-
 .../aarch64-virt-headless.xml                 |   6 +-
 ...mware-auto-efi-aarch64.aarch64-latest.args |   2 +-
 ...efi-abi-update-aarch64.aarch64-latest.args |   2 +-
 .../firmware-auto-efi-abi-update-aarch64.xml  |  18 +-
 ...re-auto-efi-abi-update.x86_64-latest.args} |   5 +-
 .../firmware-auto-efi-abi-update.xml          |   1 +
 ...-auto-efi-enrolled-keys.x86_64-latest.args |   2 +-
 ...oader-qcow2-nvram-path.x86_64-latest.args} |   5 +-
 ...to-efi-format-loader-qcow2-nvram-path.xml} |   2 +-
 ...efi-format-loader-qcow2.x86_64-latest.args |   5 +-
 ...loader-raw-abi-update.aarch64-latest.args} |   4 +-
 ...-auto-efi-format-loader-raw-abi-update.xml |   1 +
 ...-efi-format-loader-raw.aarch64-latest.args |   2 +-
 .../firmware-auto-efi-format-mismatch.xml     |   2 +-
 ...nvram-qcow2-network-nbd.x86_64-latest.args |   2 +-
 ...format-nvram-qcow2-path.x86_64-latest.args |   5 +-
 ...-efi-format-nvram-qcow2.x86_64-latest.args |   5 +-
 ...uto-efi-loader-insecure.x86_64-latest.args |   2 +-
 ...re-auto-efi-loader-path.x86_64-latest.args |   2 +-
 .../firmware-auto-efi-loader-path.xml         |   2 +-
 ...ader-secure-abi-update.x86_64-latest.args} |   5 +-
 ...ware-auto-efi-loader-secure-abi-update.xml |   1 +
 ...-auto-efi-loader-secure.x86_64-latest.args |   2 +-
 ...to-efi-no-enrolled-keys.x86_64-latest.args |   2 +-
 ...are-auto-efi-no-secboot.x86_64-latest.args |   2 +-
 ...are-auto-efi-nvram-file.x86_64-latest.args |   2 +-
 ...efi-nvram-network-iscsi.x86_64-latest.args |   2 +-
 ...o-efi-nvram-network-nbd.x86_64-latest.args |   2 +-
 ...re-auto-efi-nvram-path.x86_64-latest.args} |   2 +-
 ...m.xml => firmware-auto-efi-nvram-path.xml} |   0
 ...ram-template-nonstandard.x86_64-latest.err |   1 +
 ...e-auto-efi-nvram-template-nonstandard.xml} |   4 +-
 ...uto-efi-nvram-template.x86_64-latest.args} |   2 +-
 ...l => firmware-auto-efi-nvram-template.xml} |   2 +-
 ...e-auto-efi-rw-abi-update.x86_64-latest.err |   1 +
 .../firmware-auto-efi-rw-abi-update.xml       |   1 +
 .../firmware-auto-efi-rw.x86_64-latest.err    |   1 +
 ...efi-nvram.xml => firmware-auto-efi-rw.xml} |   2 +-
 ...rmware-auto-efi-secboot.x86_64-latest.args |   2 +-
 ...rmware-auto-efi-smm-off.x86_64-latest.args |   2 +-
 ...ware-auto-efi-stateless.x86_64-latest.args |   2 +-
 .../firmware-auto-efi.x86_64-latest.args      |   2 +-
 ...-aarch64-legacy-paths.aarch64-latest.args} |   0
 ...mware-manual-efi-aarch64-legacy-paths.xml} |   2 +-
 ...anual-efi-acpi-aarch64.aarch64-latest.args |   4 +-
 .../firmware-manual-efi-acpi-aarch64.xml      |   4 +-
 ...are-manual-efi-acpi-q35.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-acpi-q35.xml          |   2 +-
 ...are-manual-efi-features.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-features.xml          |   2 +-
 ...oader-path-nonstandard.x86_64-latest.args} |   4 +-
 ...re-manual-efi-loader-path-nonstandard.xml} |   4 +-
 ...anual-efi-loader-secure.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-loader-secure.xml     |   2 +-
 ...lled-keys-legacy-paths.x86_64-latest.args} |   2 +-
 ...ual-efi-no-enrolled-keys-legacy-paths.xml} |   2 +-
 ...al-efi-no-enrolled-keys.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-no-enrolled-keys.xml  |   4 +-
 ...o-secboot-legacy-paths.x86_64-latest.args} |   2 +-
 ...re-manual-efi-no-secboot-legacy-paths.xml} |   2 +-
 ...e-manual-efi-no-secboot.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-no-secboot.xml        |   4 +-
 ...ual-efi-noacpi-aarch64.aarch64-latest.args |   4 +-
 .../firmware-manual-efi-noacpi-aarch64.xml    |   4 +-
 .../firmware-manual-efi-noacpi-q35.xml        |   2 +-
 ...e-manual-efi-nvram-file.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-nvram-file.xml        |   2 +-
 ...efi-nvram-network-iscsi.x86_64-latest.args |   2 +-
 ...irmware-manual-efi-nvram-network-iscsi.xml |   2 +-
 ...l-efi-nvram-network-nbd.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-nvram-network-nbd.xml |   2 +-
 .../firmware-manual-efi-nvram-stateless.xml   |   2 +-
 ...m-template-nonstandard.x86_64-latest.args} |   2 +-
 ...manual-efi-nvram-template-nonstandard.xml} |   6 +-
 ...re-manual-efi-nvram-template-stateless.xml |   4 +-
 ...nual-efi-nvram-template.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-nvram-template.xml    |   4 +-
 ...al-efi-rw-legacy-paths.x86_64-latest.args} |   6 +-
 ...> firmware-manual-efi-rw-legacy-paths.xml} |   6 +-
 ...al-efi-rw-modern-paths.x86_64-latest.args} |   6 +-
 ...> firmware-manual-efi-rw-modern-paths.xml} |   6 +-
 ...i-secboot-legacy-paths.x86_64-latest.args} |   2 +-
 ...mware-manual-efi-secboot-legacy-paths.xml} |   2 +-
 ...ware-manual-efi-secboot.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-secboot.xml           |   4 +-
 ...re-manual-efi-stateless.x86_64-latest.args |   2 +-
 .../firmware-manual-efi-stateless.xml         |   2 +-
 .../firmware-manual-efi.x86_64-latest.args    |   2 +-
 .../qemuxml2argvdata/firmware-manual-efi.xml  |   2 +-
 ...-aarch64-virt-headless.aarch64-latest.args |   4 +-
 .../hvf-aarch64-virt-headless.xml             |   6 +-
 ...hvf-x86_64-q35-headless.x86_64-latest.args |   7 +-
 .../hvf-x86_64-q35-headless.xml               |   4 +-
 ...nvdimm-ppc64-abi-update.ppc64-latest.args} |   0
 ...ppc64-nonuma-abi-update.ppc64-latest.args} |   0
 ...sb-controller-qemu-xhci.ppc64-latest.args} |   0
 .../pvpanic-pci-aarch64.aarch64-latest.args   |   2 +-
 ...pci-no-address-aarch64.aarch64-latest.args |   2 +-
 .../virtio-iommu-aarch64.aarch64-latest.args  |   2 +-
 tests/qemuxml2argvtest.c                      |  54 ++++--
 .../aarch64-virt-graphics.aarch64-latest.xml  |  12 +-
 .../aarch64-virt-headless.aarch64-latest.xml  |  12 +-
 ...rmware-auto-efi-aarch64.aarch64-latest.xml |   4 +-
 ...-efi-abi-update-aarch64.aarch64-latest.xml |   4 +-
 ...are-auto-efi-abi-update.x86_64-latest.xml} |   4 +-
 ...e-auto-efi-enrolled-keys.x86_64-latest.xml |   4 +-
 ...loader-qcow2-nvram-path.x86_64-latest.xml} |   4 +-
 ...-efi-format-loader-qcow2.x86_64-latest.xml |   9 +-
 ...-loader-raw-abi-update.aarch64-latest.xml} |   4 +-
 ...o-efi-format-loader-raw.aarch64-latest.xml |   4 +-
 ...-nvram-qcow2-network-nbd.x86_64-latest.xml |   2 +-
 ...-format-nvram-qcow2-path.x86_64-latest.xml |   9 +-
 ...o-efi-format-nvram-qcow2.x86_64-latest.xml |   9 +-
 ...auto-efi-loader-insecure.x86_64-latest.xml |   4 +-
 ...are-auto-efi-loader-path.x86_64-latest.xml |   4 +-
 ...oader-secure-abi-update.x86_64-latest.xml} |   4 +-
 ...e-auto-efi-loader-secure.x86_64-latest.xml |   4 +-
 ...uto-efi-no-enrolled-keys.x86_64-latest.xml |   4 +-
 ...ware-auto-efi-no-secboot.x86_64-latest.xml |   4 +-
 ...ware-auto-efi-nvram-file.x86_64-latest.xml |   4 +-
 ...-efi-nvram-network-iscsi.x86_64-latest.xml |   2 +-
 ...to-efi-nvram-network-nbd.x86_64-latest.xml |   2 +-
 ...are-auto-efi-nvram-path.x86_64-latest.xml} |   4 +-
 ...am-template-nonstandard.x86_64-latest.xml} |   7 +-
 ...auto-efi-nvram-template.x86_64-latest.xml} |   4 +-
 ...=> firmware-auto-efi-rw.x86_64-latest.xml} |   6 +-
 ...irmware-auto-efi-secboot.x86_64-latest.xml |   4 +-
 ...irmware-auto-efi-smm-off.x86_64-latest.xml |   4 +-
 ...mware-auto-efi-stateless.x86_64-latest.xml |   2 +-
 .../firmware-auto-efi.x86_64-latest.xml       |   4 +-
 ...i-aarch64-legacy-paths.aarch64-latest.xml} |   6 +-
 ...manual-efi-acpi-aarch64.aarch64-latest.xml |   4 +-
 ...ware-manual-efi-acpi-q35.x86_64-latest.xml |   4 +-
 ...ware-manual-efi-features.x86_64-latest.xml |   4 +-
 ...loader-path-nonstandard.x86_64-latest.xml} |  11 +-
 ...manual-efi-loader-secure.x86_64-latest.xml |   4 +-
 ...olled-keys-legacy-paths.x86_64-latest.xml} |   8 +-
 ...ual-efi-no-enrolled-keys.x86_64-latest.xml |   4 +-
 ...no-secboot-legacy-paths.x86_64-latest.xml} |   8 +-
 ...re-manual-efi-no-secboot.x86_64-latest.xml |   4 +-
 ...nual-efi-noacpi-aarch64.aarch64-latest.xml |   4 +-
 ...re-manual-efi-nvram-file.x86_64-latest.xml |   4 +-
 ...-efi-nvram-network-iscsi.x86_64-latest.xml |   2 +-
 ...al-efi-nvram-network-nbd.x86_64-latest.xml |   2 +-
 ...am-template-nonstandard.x86_64-latest.xml} |   9 +-
 ...anual-efi-nvram-template.x86_64-latest.xml |   4 +-
 ...ual-efi-rw-legacy-paths.x86_64-latest.xml} |  10 +-
 ...ual-efi-rw-modern-paths.x86_64-latest.xml} |  10 +-
 ...fi-secboot-legacy-paths.x86_64-latest.xml} |   8 +-
 ...mware-manual-efi-secboot.x86_64-latest.xml |   4 +-
 ...are-manual-efi-stateless.x86_64-latest.xml |   2 +-
 .../firmware-manual-efi.x86_64-latest.xml     |   4 +-
 ...f-aarch64-virt-headless.aarch64-latest.xml |  10 +-
 .../hvf-x86_64-q35-headless.x86_64-latest.xml |  11 +-
 ...-nvdimm-ppc64-abi-update.ppc64-latest.xml} |   0
 ...-ppc64-nonuma-abi-update.ppc64-latest.xml} |   0
 .../pvpanic-pci-aarch64.aarch64-latest.xml    |   4 +-
 ...-pci-no-address-aarch64.aarch64-latest.xml |   4 +-
 .../virtio-iommu-aarch64.aarch64-latest.xml   |   4 +-
 tests/qemuxml2xmltest.c                       |  30 +++-
 196 files changed, 655 insertions(+), 491 deletions(-)
 create mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/20-bios.json
 delete mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/40-ovmf-sb-keys.json
 create mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/59-combined.json
 rename tests/qemufirmwaredata/etc/qemu/firmware/{42-masked.json => 92-masked.json} (100%)
 rename tests/qemufirmwaredata/out/usr/share/qemu/firmware/{61-ovmf.json => 60-edk2-ovmf-x64-amdsev.json} (60%)
 copy tests/qemufirmwaredata/{usr/share/qemu/firmware/45-ovmf-sev-stateless.json => out/usr/share/qemu/firmware/60-edk2-ovmf-x64-inteltdx.json} (63%)
 copy tests/qemufirmwaredata/usr/share/qemu/firmware/{50-ovmf-sb-keys.json => 30-edk2-ovmf-4m-qcow2-x64-sb-enrolled.json} (70%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{50-ovmf-sb-keys.json => 31-edk2-ovmf-2m-raw-x64-sb-enrolled.json} (78%)
 rename tests/qemufirmwaredata/{out/usr/share/qemu/firmware/50-ovmf-sb-keys.json => usr/share/qemu/firmware/40-edk2-ovmf-4m-qcow2-x64-sb.json} (59%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{60-ovmf-sb.json => 41-edk2-ovmf-2m-raw-x64-sb.json} (77%)
 copy tests/qemufirmwaredata/usr/share/qemu/firmware/{66-aavmf-qcow2.json => 50-edk2-aarch64-qcow2.json} (53%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{65-ovmf-qcow2.json => 50-edk2-ovmf-4m-qcow2-x64-nosb.json} (68%)
 create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/50-edk2-ovmf-x64-microvm.json
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{70-aavmf.json => 51-edk2-aarch64-raw.json} (64%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{61-ovmf.json => 51-edk2-ovmf-2m-raw-x64-nosb.json} (69%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{66-aavmf-qcow2.json => 52-edk2-aarch64-verbose-qcow2.json} (53%)
 rename tests/qemufirmwaredata/{out/usr/share/qemu/firmware/70-aavmf.json => usr/share/qemu/firmware/53-edk2-aarch64-verbose-raw.json} (57%)
 copy tests/qemufirmwaredata/usr/share/qemu/firmware/{45-ovmf-sev-stateless.json => 60-edk2-ovmf-x64-amdsev.json} (73%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{45-ovmf-sev-stateless.json => 60-edk2-ovmf-x64-inteltdx.json} (66%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{55-ovmf-sb-combined.json => 90-combined.json} (85%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{40-bios.json => 91-bios.json} (87%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{42-masked.json => 92-masked.json} (100%)
 mode change 100644 => 120000 tests/qemuxml2argvdata/firmware-auto-efi-abi-update-aarch64.xml
 copy tests/qemuxml2argvdata/{firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args => firmware-auto-efi-abi-update.x86_64-latest.args} (80%)
 create mode 120000 tests/qemuxml2argvdata/firmware-auto-efi-abi-update.xml
 copy tests/qemuxml2argvdata/{firmware-auto-efi-format-nvram-qcow2-path.x86_64-latest.args => firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.args} (80%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-format-mismatch.xml => firmware-auto-efi-format-loader-qcow2-nvram-path.xml} (91%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-format-loader-raw.aarch64-latest.args => firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.args} (84%)
 create mode 120000 tests/qemuxml2argvdata/firmware-auto-efi-format-loader-raw-abi-update.xml
 copy tests/qemuxml2argvdata/{firmware-auto-efi-format-nvram-qcow2.x86_64-latest.args => firmware-auto-efi-loader-secure-abi-update.x86_64-latest.args} (80%)
 create mode 120000 tests/qemuxml2argvdata/firmware-auto-efi-loader-secure-abi-update.xml
 rename tests/qemuxml2argvdata/{firmware-auto-efi-nvram.x86_64-latest.args => firmware-auto-efi-nvram-path.x86_64-latest.args} (91%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-nvram-path.xml} (100%)
 create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-nvram-template-nonstandard.x86_64-latest.err
 copy tests/qemuxml2argvdata/{firmware-auto-efi-format-mismatch.xml => firmware-auto-efi-nvram-template-nonstandard.xml} (77%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-enrolled-keys.x86_64-latest.args => firmware-auto-efi-nvram-template.x86_64-latest.args} (91%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-nvram-template.xml} (88%)
 create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.x86_64-latest.err
 create mode 120000 tests/qemuxml2argvdata/firmware-auto-efi-rw-abi-update.xml
 create mode 100644 tests/qemuxml2argvdata/firmware-auto-efi-rw.x86_64-latest.err
 copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-auto-efi-rw.xml} (91%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-aarch64.aarch64-latest.args => firmware-manual-efi-aarch64-legacy-paths.aarch64-latest.args} (100%)
 copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-aarch64.xml => firmware-manual-efi-aarch64-legacy-paths.xml} (90%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-path.x86_64-latest.args => firmware-manual-efi-loader-path-nonstandard.x86_64-latest.args} (90%)
 copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.xml => firmware-manual-efi-loader-path-nonstandard.xml} (78%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-manual-efi-no-enrolled-keys-legacy-paths.x86_64-latest.args} (99%)
 copy tests/qemuxml2argvdata/{firmware-manual-efi-loader-secure.xml => firmware-manual-efi-no-enrolled-keys-legacy-paths.xml} (91%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-path.x86_64-latest.args => firmware-manual-efi-no-secboot-legacy-paths.x86_64-latest.args} (99%)
 copy tests/qemuxml2argvdata/{firmware-manual-efi-acpi-q35.xml => firmware-manual-efi-no-secboot-legacy-paths.xml} (90%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-loader-path.x86_64-latest.args => firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.args} (91%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-format-mismatch.xml => firmware-manual-efi-nvram-template-nonstandard.xml} (75%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-stateless.x86_64-latest.args => firmware-manual-efi-rw-legacy-paths.x86_64-latest.args} (81%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-manual-efi-rw-legacy-paths.xml} (79%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-stateless.x86_64-latest.args => firmware-manual-efi-rw-modern-paths.x86_64-latest.args} (80%)
 rename tests/qemuxml2argvdata/{firmware-auto-efi-nvram.xml => firmware-manual-efi-rw-modern-paths.xml} (78%)
 copy tests/qemuxml2argvdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.args => firmware-manual-efi-secboot-legacy-paths.x86_64-latest.args} (99%)
 copy tests/qemuxml2argvdata/{firmware-manual-efi-loader-secure.xml => firmware-manual-efi-secboot-legacy-paths.xml} (90%)
 rename tests/qemuxml2argvdata/{memory-hotplug-nvdimm-ppc64-abi-update.args => memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.args} (100%)
 rename tests/qemuxml2argvdata/{memory-hotplug-ppc64-nonuma-abi-update.args => memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.args} (100%)
 rename tests/qemuxml2argvdata/{ppc64-usb-controller-qemu-xhci.args => ppc64-usb-controller-qemu-xhci.ppc64-latest.args} (100%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-enrolled-keys.x86_64-latest.xml => firmware-auto-efi-abi-update.x86_64-latest.xml} (82%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-enrolled-keys.x86_64-latest.xml => firmware-auto-efi-format-loader-qcow2-nvram-path.x86_64-latest.xml} (83%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-auto-efi-format-loader-raw-abi-update.aarch64-latest.xml} (81%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-enrolled-keys.x86_64-latest.xml => firmware-auto-efi-loader-secure-abi-update.x86_64-latest.xml} (82%)
 rename tests/qemuxml2xmloutdata/{firmware-auto-efi-nvram.x86_64-latest.xml => firmware-auto-efi-nvram-path.x86_64-latest.xml} (90%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-auto-efi-nvram-template-nonstandard.x86_64-latest.xml} (83%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml => firmware-auto-efi-nvram-template.x86_64-latest.xml} (90%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-auto-efi-rw.x86_64-latest.xml} (83%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-aarch64.aarch64-latest.xml => firmware-manual-efi-aarch64-legacy-paths.aarch64-latest.xml} (87%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-manual-efi-loader-path-nonstandard.x86_64-latest.xml} (80%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-no-enrolled-keys.x86_64-latest.xml => firmware-manual-efi-no-enrolled-keys-legacy-paths.x86_64-latest.xml} (88%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-loader-path.x86_64-latest.xml => firmware-manual-efi-no-secboot-legacy-paths.x86_64-latest.xml} (87%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-manual-efi-nvram-template-nonstandard.x86_64-latest.xml} (81%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-manual-efi-rw-legacy-paths.x86_64-latest.xml} (80%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-stateless.x86_64-latest.xml => firmware-manual-efi-rw-modern-paths.x86_64-latest.xml} (80%)
 copy tests/qemuxml2xmloutdata/{firmware-auto-efi-secboot.x86_64-latest.xml => firmware-manual-efi-secboot-legacy-paths.x86_64-latest.xml} (88%)
 rename tests/qemuxml2xmloutdata/{memory-hotplug-nvdimm-ppc64-abi-update.xml => memory-hotplug-nvdimm-ppc64-abi-update.ppc64-latest.xml} (100%)
 rename tests/qemuxml2xmloutdata/{memory-hotplug-ppc64-nonuma-abi-update.xml => memory-hotplug-ppc64-nonuma-abi-update.ppc64-latest.xml} (100%)

-- 
2.41.0
Re: [libvirt PATCH 00/21] qemu: Various fixes to firmware selection
Posted by Michal Prívozník 8 months, 3 weeks ago
On 8/10/23 18:50, Andrea Bolognani wrote:
> 
> Andrea Bolognani (21):
>   tests: Use DO_TEST_CAPS_*_ABI_UPDATE() for ppc64
>   tests: Switch to firmware autoselection for hvf
>   tests: Use virt-4.0 machine type for aarch64
>   tests: Consistently use /path/to/guest_VARS.fd
>   tests: Turn abi-update.xml into a symlink
>   tests: Rename firmware-auto-efi-nvram-path
>   qemu: Fix return value for qemuFirmwareFillDomainLegacy()
>   qemu: Fix lookup against stateless/combined pflash
>   tests: Add some more DO_TEST*ABI_UPDATE* macros
>   tests: Add more tests for firmware selection
>   tests: Update firmware descriptor files
>   tests: Drop tags from BIOS firmware descriptor
>   tests: Include microvm in firmwaretest
>   qemu: Don't overwrite NVRAM template for legacy firmware
>   qemu: Generate NVRAM path in more cases
>   qemu: Filter firmware based on loader.readonly
>   qemu: Match NVRAM template extension for new domains
>   conf: Don't default to raw format for loader/NVRAM
>   tests: Rename firmware-auto-efi-format-loader-qcow2-nvram-path
>   tests: Reintroduce firmware-auto-efi-format-mismatch
>   NEWS: Mention fixes to firmware selection
> 

>  196 files changed, 655 insertions(+), 491 deletions(-)


Reviewed-by: Michal Privoznik <mprivozn@redhat.com>