[PATCH v2 00/38] qemu: Implement support for uefi-vars device (varstore element)

Andrea Bolognani via Devel posted 38 patches 9 hours ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/libvirt tags/patchew/20260209134712.296670-1-abologna@redhat.com
NEWS.rst                                      |  16 ++
docs/formatcaps.rst                           |   2 +-
docs/formatdomain.rst                         |  47 +++--
docs/formatdomaincaps.rst                     |  81 +++++---
docs/kbase/secureboot.rst                     |  46 +++--
docs/manpages/virsh.rst                       |  44 +++--
include/libvirt/libvirt-domain-snapshot.h     |   2 +-
include/libvirt/libvirt-domain.h              |   4 +-
libvirt.spec.in                               |   1 +
src/conf/domain_capabilities.c                |  10 +
src/conf/domain_capabilities.h                |   6 +
src/conf/domain_conf.c                        |  79 +++++++-
src/conf/domain_conf.h                        |   9 +
src/conf/domain_postparse.c                   |  19 --
src/conf/domain_validate.c                    |  82 +++-----
src/conf/schemas/domaincaps.rng               |   9 +
src/conf/schemas/domaincommon.rng             |  64 +++---
src/conf/virconftypes.h                       |   2 +
src/libvirt_private.syms                      |   2 +
src/libxl/libxl_domain.c                      |   6 +
src/qemu/meson.build                          |   1 +
src/qemu/qemu_capabilities.c                  |  31 ++-
src/qemu/qemu_capabilities.h                  |   3 +
src/qemu/qemu_command.c                       |  34 ++++
src/qemu/qemu_conf.c                          |   4 +
src/qemu/qemu_conf.h                          |   1 +
src/qemu/qemu_driver.c                        |  27 ++-
src/qemu/qemu_firmware.c                      | 182 ++++++++++++++++--
src/qemu/qemu_firmware.h                      |   1 +
src/qemu/qemu_process.c                       |  84 ++++++--
src/qemu/qemu_validate.c                      |  20 ++
src/security/security_dac.c                   |  22 ++-
src/security/security_selinux.c               |  53 +++--
src/security/virt-aa-helper.c                 |  36 +++-
.../qemu_10.0.0-q35.x86_64+amdsev.xml         |   1 +
.../domaincapsdata/qemu_10.0.0-q35.x86_64.xml |   1 +
.../qemu_10.0.0-tcg.x86_64+amdsev.xml         |   1 +
.../domaincapsdata/qemu_10.0.0-tcg.x86_64.xml |   1 +
.../qemu_10.0.0-virt.aarch64.xml              |   1 +
tests/domaincapsdata/qemu_10.0.0.aarch64.xml  |   1 +
tests/domaincapsdata/qemu_10.0.0.ppc64.xml    |   1 +
tests/domaincapsdata/qemu_10.0.0.s390x.xml    |   1 +
.../qemu_10.0.0.x86_64+amdsev.xml             |   1 +
tests/domaincapsdata/qemu_10.0.0.x86_64.xml   |   1 +
.../qemu_10.1.0-q35.x86_64+inteltdx.xml       |   1 +
.../domaincapsdata/qemu_10.1.0-q35.x86_64.xml |   1 +
.../qemu_10.1.0-tcg.x86_64+inteltdx.xml       |   1 +
.../domaincapsdata/qemu_10.1.0-tcg.x86_64.xml |   1 +
tests/domaincapsdata/qemu_10.1.0.s390x.xml    |   1 +
.../qemu_10.1.0.x86_64+inteltdx.xml           |   1 +
tests/domaincapsdata/qemu_10.1.0.x86_64.xml   |   1 +
.../qemu_10.2.0-q35.x86_64+mshv.xml           |   1 +
.../domaincapsdata/qemu_10.2.0-q35.x86_64.xml |   1 +
.../qemu_10.2.0-tcg.x86_64+mshv.xml           |   1 +
.../domaincapsdata/qemu_10.2.0-tcg.x86_64.xml |   1 +
.../qemu_10.2.0-virt.aarch64.xml              |   1 +
tests/domaincapsdata/qemu_10.2.0.aarch64.xml  |   1 +
.../qemu_10.2.0.x86_64+mshv.xml               |   1 +
tests/domaincapsdata/qemu_10.2.0.x86_64.xml   |   1 +
.../domaincapsdata/qemu_11.0.0-q35.x86_64.xml |   1 +
.../domaincapsdata/qemu_11.0.0-tcg.x86_64.xml |   1 +
.../qemu_11.0.0-virt.aarch64.xml              |   1 +
tests/domaincapsdata/qemu_11.0.0.aarch64.xml  |   1 +
tests/domaincapsdata/qemu_11.0.0.x86_64.xml   |   1 +
.../domaincapsdata/qemu_6.2.0-q35.x86_64.xml  |   1 +
.../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml  |   1 +
tests/domaincapsdata/qemu_6.2.0.ppc64.xml     |   1 +
tests/domaincapsdata/qemu_6.2.0.x86_64.xml    |   1 +
.../domaincapsdata/qemu_7.0.0-q35.x86_64.xml  |   1 +
.../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml  |   1 +
tests/domaincapsdata/qemu_7.0.0.ppc64.xml     |   1 +
tests/domaincapsdata/qemu_7.0.0.x86_64.xml    |   1 +
.../domaincapsdata/qemu_7.1.0-q35.x86_64.xml  |   1 +
.../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml  |   1 +
tests/domaincapsdata/qemu_7.1.0.ppc64.xml     |   1 +
tests/domaincapsdata/qemu_7.1.0.x86_64.xml    |   1 +
.../qemu_7.2.0-hvf.x86_64+hvf.xml             |   1 +
.../domaincapsdata/qemu_7.2.0-q35.x86_64.xml  |   1 +
.../qemu_7.2.0-tcg.x86_64+hvf.xml             |   1 +
.../domaincapsdata/qemu_7.2.0-tcg.x86_64.xml  |   1 +
tests/domaincapsdata/qemu_7.2.0.ppc.xml       |   1 +
tests/domaincapsdata/qemu_7.2.0.x86_64.xml    |   1 +
.../domaincapsdata/qemu_8.0.0-q35.x86_64.xml  |   1 +
.../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml  |   1 +
tests/domaincapsdata/qemu_8.0.0.x86_64.xml    |   1 +
.../domaincapsdata/qemu_8.1.0-q35.x86_64.xml  |   1 +
.../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml  |   1 +
tests/domaincapsdata/qemu_8.1.0.s390x.xml     |   1 +
tests/domaincapsdata/qemu_8.1.0.x86_64.xml    |   1 +
.../domaincapsdata/qemu_8.2.0-q35.x86_64.xml  |   1 +
.../qemu_8.2.0-tcg-virt.loongarch64.xml       |   1 +
.../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml  |   1 +
.../qemu_8.2.0-virt.aarch64.xml               |   1 +
.../qemu_8.2.0-virt.loongarch64.xml           |   1 +
tests/domaincapsdata/qemu_8.2.0.aarch64.xml   |   1 +
tests/domaincapsdata/qemu_8.2.0.armv7l.xml    |   1 +
tests/domaincapsdata/qemu_8.2.0.s390x.xml     |   1 +
tests/domaincapsdata/qemu_8.2.0.x86_64.xml    |   1 +
.../domaincapsdata/qemu_9.0.0-q35.x86_64.xml  |   1 +
.../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml  |   1 +
tests/domaincapsdata/qemu_9.0.0.sparc.xml     |   1 +
tests/domaincapsdata/qemu_9.0.0.x86_64.xml    |   1 +
.../domaincapsdata/qemu_9.1.0-q35.x86_64.xml  |   1 +
.../qemu_9.1.0-tcg-virt.riscv64.xml           |   1 +
.../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml  |   1 +
.../qemu_9.1.0-virt.riscv64.xml               |   1 +
tests/domaincapsdata/qemu_9.1.0.s390x.xml     |   1 +
tests/domaincapsdata/qemu_9.1.0.x86_64.xml    |   1 +
.../qemu_9.2.0-hvf.aarch64+hvf.xml            |   1 +
.../qemu_9.2.0-q35.x86_64+amdsev.xml          |   1 +
.../domaincapsdata/qemu_9.2.0-q35.x86_64.xml  |   1 +
.../qemu_9.2.0-tcg.x86_64+amdsev.xml          |   1 +
.../domaincapsdata/qemu_9.2.0-tcg.x86_64.xml  |   1 +
tests/domaincapsdata/qemu_9.2.0.s390x.xml     |   1 +
.../qemu_9.2.0.x86_64+amdsev.xml              |   1 +
tests/domaincapsdata/qemu_9.2.0.x86_64.xml    |   1 +
.../caps_10.0.0_aarch64.xml                   |   1 +
.../caps_10.0.0_x86_64+amdsev.xml             |   1 +
.../caps_10.0.0_x86_64.xml                    |   1 +
.../caps_10.1.0_s390x.xml                     |   1 +
.../caps_10.1.0_x86_64+inteltdx.xml           |   1 +
.../caps_10.1.0_x86_64.xml                    |   1 +
.../caps_10.2.0_aarch64.xml                   |   1 +
.../caps_10.2.0_x86_64+mshv.xml               |   1 +
.../caps_10.2.0_x86_64.xml                    |   1 +
.../caps_11.0.0_aarch64.xml                   |   1 +
.../caps_11.0.0_x86_64.xml                    |   1 +
.../etc/qemu/firmware/20-bios.json            |   1 -
.../etc/qemu/firmware/20-libvirt-bios.json    |   1 +
.../etc/qemu/firmware/59-combined.json        |   1 -
.../qemu/firmware/59-libvirt-combined.json    |   1 +
...{92-masked.json => 92-libvirt-masked.json} |   0
.../{10-bios.json => 10-libvirt-bios.json}    |   0
...0-edk2-ovmf-qemuvars-x64-sb-enrolled.json} |  15 +-
.../70-edk2-qemuvars-aarch64-sb-enrolled.json |  28 +++
...json => 71-edk2-ovmf-qemuvars-x64-sb.json} |  16 +-
.../firmware/71-edk2-qemuvars-aarch64-sb.json |  27 +++
...combined.json => 90-libvirt-combined.json} |   0
.../{91-bios.json => 91-libvirt-bios.json}    |   2 +-
...{92-masked.json => 92-libvirt-masked.json} |   0
...3-invalid.json => 93-libvirt-invalid.json} |   0
tests/qemufirmwaretest.c                      |  71 ++++---
...-auto-bios-not-stateless.x86_64-latest.err |   2 +-
...auto-bios-not-stateless.x86_64-latest.xml} |   6 +-
...firmware-auto-bios-nvram.x86_64-latest.err |   2 +-
...are-auto-bios-stateless.x86_64-latest.args |   2 +-
...ware-auto-bios-stateless.x86_64-latest.xml |   2 +-
.../firmware-auto-bios.x86_64-latest.args     |   2 +-
.../firmware-auto-bios.x86_64-latest.xml      |   2 +-
...fi-enrolled-keys-aarch64.aarch64-8.2.0.err |   1 +
...enrolled-keys-aarch64.aarch64-latest.args} |  12 +-
...i-enrolled-keys-aarch64.aarch64-latest.xml |  32 +++
...irmware-auto-efi-enrolled-keys-aarch64.xml |  20 ++
...-efi-varstore-aarch64.aarch64-latest.args} |  12 +-
...to-efi-varstore-aarch64.aarch64-latest.xml |  32 +++
.../firmware-auto-efi-varstore-aarch64.xml    |  18 ++
...-auto-efi-varstore-q35.x86_64-latest.args} |   5 +-
...e-auto-efi-varstore-q35.x86_64-latest.xml} |  11 +-
.../firmware-auto-efi-varstore-q35.xml        |  18 ++
...ual-bios-not-stateless.x86_64-latest.args} |   8 +-
...anual-bios-not-stateless.x86_64-latest.err |   1 -
...nual-bios-not-stateless.x86_64-latest.xml} |   2 +-
...re-manual-bios-stateless.x86_64-latest.xml |   6 +-
.../firmware-manual-bios.x86_64-latest.xml    |   6 +-
...nual-efi-nvram-stateless.x86_64-latest.err |   2 +-
...nvram-template-stateless.x86_64-latest.err |   2 +-
...ware-manual-efi-rw-nvram.x86_64-latest.err |   2 +-
...ual-efi-varstore-aarch64.aarch64-8.2.0.err |   1 +
...-efi-varstore-aarch64.aarch64-latest.args} |  12 +-
...al-efi-varstore-aarch64.aarch64-latest.xml |  32 +++
.../firmware-manual-efi-varstore-aarch64.xml  |  19 ++
...e-manual-efi-varstore-q35.x86_64-8.2.0.err |   1 +
...anual-efi-varstore-q35.x86_64-latest.args} |   5 +-
...manual-efi-varstore-q35.x86_64-latest.xml} |  11 +-
.../firmware-manual-efi-varstore-q35.xml      |  19 ++
tests/qemuxmlconftest.c                       |  16 +-
tests/testutilsqemu.c                         |   2 +
tools/virsh-domain.c                          |  55 ++++--
tools/virsh-snapshot.c                        |   9 +-
179 files changed, 1296 insertions(+), 380 deletions(-)
delete mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/20-bios.json
create mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/20-libvirt-bios.json
delete mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/59-combined.json
create mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/59-libvirt-combined.json
rename tests/qemufirmwaredata/etc/qemu/firmware/{92-masked.json => 92-libvirt-masked.json} (100%)
rename tests/qemufirmwaredata/home/user/.config/qemu/firmware/{10-bios.json => 10-libvirt-bios.json} (100%)
copy tests/qemufirmwaredata/usr/share/qemu/firmware/{90-combined.json => 70-edk2-ovmf-qemuvars-x64-sb-enrolled.json} (55%)
create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/70-edk2-qemuvars-aarch64-sb-enrolled.json
copy tests/qemufirmwaredata/usr/share/qemu/firmware/{90-combined.json => 71-edk2-ovmf-qemuvars-x64-sb.json} (51%)
create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/71-edk2-qemuvars-aarch64-sb.json
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{90-combined.json => 90-libvirt-combined.json} (100%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{91-bios.json => 91-libvirt-bios.json} (90%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{92-masked.json => 92-libvirt-masked.json} (100%)
rename tests/qemufirmwaredata/usr/share/qemu/firmware/{93-invalid.json => 93-libvirt-invalid.json} (100%)
copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.xml => firmware-auto-bios-not-stateless.x86_64-latest.xml} (84%)
create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.aarch64-8.2.0.err
copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-auto-efi-enrolled-keys-aarch64.aarch64-latest.args} (72%)
create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.aarch64-latest.xml
create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.xml
copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-auto-efi-varstore-aarch64.aarch64-latest.args} (72%)
create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-varstore-aarch64.aarch64-latest.xml
create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-varstore-aarch64.xml
copy tests/qemuxmlconfdata/{firmware-auto-bios-stateless.x86_64-latest.args => firmware-auto-efi-varstore-q35.x86_64-latest.args} (83%)
copy tests/qemuxmlconfdata/{firmware-auto-bios-stateless.x86_64-latest.xml => firmware-auto-efi-varstore-q35.x86_64-latest.xml} (73%)
create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-varstore-q35.xml
copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-manual-bios-not-stateless.x86_64-latest.args} (84%)
delete mode 100644 tests/qemuxmlconfdata/firmware-manual-bios-not-stateless.x86_64-latest.err
copy tests/qemuxmlconfdata/{firmware-manual-bios.x86_64-latest.xml => firmware-manual-bios-not-stateless.x86_64-latest.xml} (90%)
create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-aarch64.aarch64-8.2.0.err
copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-manual-efi-varstore-aarch64.aarch64-latest.args} (73%)
create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-aarch64.aarch64-latest.xml
create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-aarch64.xml
create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-q35.x86_64-8.2.0.err
copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-manual-efi-varstore-q35.x86_64-latest.args} (85%)
copy tests/qemuxmlconfdata/{firmware-auto-bios-stateless.x86_64-latest.xml => firmware-manual-efi-varstore-q35.x86_64-latest.xml} (74%)
create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-q35.xml
[PATCH v2 00/38] qemu: Implement support for uefi-vars device (varstore element)
Posted by Andrea Bolognani via Devel 9 hours ago
This series makes it possible to use Secure Boot with aarch64 VMs.

https://issues.redhat.com/browse/RHEL-82645

Note that, while I consider the entire series to be ready for review,
there are two patches that are marked as DONOTMERGE: that's because
they respectively implement support for a JSON firmware descriptor
syntax extension that has not yet been approved, and import into the
tree firmware descriptor that are not yet part of the Fedora edk2
package. The latter depends on the former, of course, for which
patches have been posted[1] to the QEMU mailing list.

Changes from [v1]:

  * rewrite based on review feedback: the <nvram> element is no
    longer used, and a dedicated <varstore> element is introduced
    instead;

  * additional test coverage, as well as fixes and improvements
    related to firmware selection and its documentation, are present
    as well.

[1] https://mail.gnu.org/archive/html/qemu-devel/2026-02/msg02498.html
[v1] https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/TGLFMPRXCATRPA6MPHH5KYXY5XCTSRDT/

Andrea Bolognani (38):
  qemu_firmware: Only set format for custom loader if path is present
  conf: Move type=rom default for loader to drivers
  qemu_firmware: Improve matching when loader.type is absent
  tests: Rename custom JSON firmware descriptors
  tests: Update JSON firmware descriptor for BIOS
  schema: Add varstore element
  conf: Parse and format varstore element
  conf: Update validation to consider varstore element
  qemu_capabilities: Introduce QEMU_CAPS_DEVICE_UEFI_VARS
  qemu: Validate presence of uefi-vars device
  tests: Add firmware-manual-efi-varstore-q35
  tests: Add firmware-manual-efi-varstore-aarch64
  tests: Add firmware-auto-efi-varstore-q35
  tests: Add firmware-auto-efi-varstore-aarch64
  tests: Add firmware-auto-efi-enrolled-keys-aarch64
  qemu_firmware: Parse host-uefi-vars firmware feature
  qemu_firmware: Split sanity check
  qemu_firmware: Consider host-uefi-vars feature in sanity check
  DONOTMERGE: qemu_firmware: Support extended syntax for ROM firmware
    descriptors
  qemu_firmware: Report NVRAM template path for ROMs
  schema: Add varstore element for domcaps
  conf: Include varstore element in domcaps
  qemu: Fill in varstore element in domcaps
  qemu_firmware: Use of NVRAM implies stateful firmware
  qemu_firmware: Allow matching stateful ROMs
  qemu_firmware: Fill in varstore information
  qemu: Introduce varstoreDir
  qemu_firmware: Generate varstore path when necessary
  DONOTMERGE: tests: Add firmware descriptors for uefi-vars builds
  qemu_command: Use uefi-vars device where appropriate
  qemu: Introduce qemuPrepareNVRAMFileCommon()
  qemu: Create and delete varstore file
  security: Mark ROMs as read only when using AppArmor
  security: Handle varstore file
  include: Mention varstore where applicable
  virsh: Update for varstore handling
  docs: Update for varstore and improve
  news: Document support for uefi-vars device and firmwares

 NEWS.rst                                      |  16 ++
 docs/formatcaps.rst                           |   2 +-
 docs/formatdomain.rst                         |  47 +++--
 docs/formatdomaincaps.rst                     |  81 +++++---
 docs/kbase/secureboot.rst                     |  46 +++--
 docs/manpages/virsh.rst                       |  44 +++--
 include/libvirt/libvirt-domain-snapshot.h     |   2 +-
 include/libvirt/libvirt-domain.h              |   4 +-
 libvirt.spec.in                               |   1 +
 src/conf/domain_capabilities.c                |  10 +
 src/conf/domain_capabilities.h                |   6 +
 src/conf/domain_conf.c                        |  79 +++++++-
 src/conf/domain_conf.h                        |   9 +
 src/conf/domain_postparse.c                   |  19 --
 src/conf/domain_validate.c                    |  82 +++-----
 src/conf/schemas/domaincaps.rng               |   9 +
 src/conf/schemas/domaincommon.rng             |  64 +++---
 src/conf/virconftypes.h                       |   2 +
 src/libvirt_private.syms                      |   2 +
 src/libxl/libxl_domain.c                      |   6 +
 src/qemu/meson.build                          |   1 +
 src/qemu/qemu_capabilities.c                  |  31 ++-
 src/qemu/qemu_capabilities.h                  |   3 +
 src/qemu/qemu_command.c                       |  34 ++++
 src/qemu/qemu_conf.c                          |   4 +
 src/qemu/qemu_conf.h                          |   1 +
 src/qemu/qemu_driver.c                        |  27 ++-
 src/qemu/qemu_firmware.c                      | 182 ++++++++++++++++--
 src/qemu/qemu_firmware.h                      |   1 +
 src/qemu/qemu_process.c                       |  84 ++++++--
 src/qemu/qemu_validate.c                      |  20 ++
 src/security/security_dac.c                   |  22 ++-
 src/security/security_selinux.c               |  53 +++--
 src/security/virt-aa-helper.c                 |  36 +++-
 .../qemu_10.0.0-q35.x86_64+amdsev.xml         |   1 +
 .../domaincapsdata/qemu_10.0.0-q35.x86_64.xml |   1 +
 .../qemu_10.0.0-tcg.x86_64+amdsev.xml         |   1 +
 .../domaincapsdata/qemu_10.0.0-tcg.x86_64.xml |   1 +
 .../qemu_10.0.0-virt.aarch64.xml              |   1 +
 tests/domaincapsdata/qemu_10.0.0.aarch64.xml  |   1 +
 tests/domaincapsdata/qemu_10.0.0.ppc64.xml    |   1 +
 tests/domaincapsdata/qemu_10.0.0.s390x.xml    |   1 +
 .../qemu_10.0.0.x86_64+amdsev.xml             |   1 +
 tests/domaincapsdata/qemu_10.0.0.x86_64.xml   |   1 +
 .../qemu_10.1.0-q35.x86_64+inteltdx.xml       |   1 +
 .../domaincapsdata/qemu_10.1.0-q35.x86_64.xml |   1 +
 .../qemu_10.1.0-tcg.x86_64+inteltdx.xml       |   1 +
 .../domaincapsdata/qemu_10.1.0-tcg.x86_64.xml |   1 +
 tests/domaincapsdata/qemu_10.1.0.s390x.xml    |   1 +
 .../qemu_10.1.0.x86_64+inteltdx.xml           |   1 +
 tests/domaincapsdata/qemu_10.1.0.x86_64.xml   |   1 +
 .../qemu_10.2.0-q35.x86_64+mshv.xml           |   1 +
 .../domaincapsdata/qemu_10.2.0-q35.x86_64.xml |   1 +
 .../qemu_10.2.0-tcg.x86_64+mshv.xml           |   1 +
 .../domaincapsdata/qemu_10.2.0-tcg.x86_64.xml |   1 +
 .../qemu_10.2.0-virt.aarch64.xml              |   1 +
 tests/domaincapsdata/qemu_10.2.0.aarch64.xml  |   1 +
 .../qemu_10.2.0.x86_64+mshv.xml               |   1 +
 tests/domaincapsdata/qemu_10.2.0.x86_64.xml   |   1 +
 .../domaincapsdata/qemu_11.0.0-q35.x86_64.xml |   1 +
 .../domaincapsdata/qemu_11.0.0-tcg.x86_64.xml |   1 +
 .../qemu_11.0.0-virt.aarch64.xml              |   1 +
 tests/domaincapsdata/qemu_11.0.0.aarch64.xml  |   1 +
 tests/domaincapsdata/qemu_11.0.0.x86_64.xml   |   1 +
 .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml  |   1 +
 .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml  |   1 +
 tests/domaincapsdata/qemu_6.2.0.ppc64.xml     |   1 +
 tests/domaincapsdata/qemu_6.2.0.x86_64.xml    |   1 +
 .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml  |   1 +
 .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml  |   1 +
 tests/domaincapsdata/qemu_7.0.0.ppc64.xml     |   1 +
 tests/domaincapsdata/qemu_7.0.0.x86_64.xml    |   1 +
 .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml  |   1 +
 .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml  |   1 +
 tests/domaincapsdata/qemu_7.1.0.ppc64.xml     |   1 +
 tests/domaincapsdata/qemu_7.1.0.x86_64.xml    |   1 +
 .../qemu_7.2.0-hvf.x86_64+hvf.xml             |   1 +
 .../domaincapsdata/qemu_7.2.0-q35.x86_64.xml  |   1 +
 .../qemu_7.2.0-tcg.x86_64+hvf.xml             |   1 +
 .../domaincapsdata/qemu_7.2.0-tcg.x86_64.xml  |   1 +
 tests/domaincapsdata/qemu_7.2.0.ppc.xml       |   1 +
 tests/domaincapsdata/qemu_7.2.0.x86_64.xml    |   1 +
 .../domaincapsdata/qemu_8.0.0-q35.x86_64.xml  |   1 +
 .../domaincapsdata/qemu_8.0.0-tcg.x86_64.xml  |   1 +
 tests/domaincapsdata/qemu_8.0.0.x86_64.xml    |   1 +
 .../domaincapsdata/qemu_8.1.0-q35.x86_64.xml  |   1 +
 .../domaincapsdata/qemu_8.1.0-tcg.x86_64.xml  |   1 +
 tests/domaincapsdata/qemu_8.1.0.s390x.xml     |   1 +
 tests/domaincapsdata/qemu_8.1.0.x86_64.xml    |   1 +
 .../domaincapsdata/qemu_8.2.0-q35.x86_64.xml  |   1 +
 .../qemu_8.2.0-tcg-virt.loongarch64.xml       |   1 +
 .../domaincapsdata/qemu_8.2.0-tcg.x86_64.xml  |   1 +
 .../qemu_8.2.0-virt.aarch64.xml               |   1 +
 .../qemu_8.2.0-virt.loongarch64.xml           |   1 +
 tests/domaincapsdata/qemu_8.2.0.aarch64.xml   |   1 +
 tests/domaincapsdata/qemu_8.2.0.armv7l.xml    |   1 +
 tests/domaincapsdata/qemu_8.2.0.s390x.xml     |   1 +
 tests/domaincapsdata/qemu_8.2.0.x86_64.xml    |   1 +
 .../domaincapsdata/qemu_9.0.0-q35.x86_64.xml  |   1 +
 .../domaincapsdata/qemu_9.0.0-tcg.x86_64.xml  |   1 +
 tests/domaincapsdata/qemu_9.0.0.sparc.xml     |   1 +
 tests/domaincapsdata/qemu_9.0.0.x86_64.xml    |   1 +
 .../domaincapsdata/qemu_9.1.0-q35.x86_64.xml  |   1 +
 .../qemu_9.1.0-tcg-virt.riscv64.xml           |   1 +
 .../domaincapsdata/qemu_9.1.0-tcg.x86_64.xml  |   1 +
 .../qemu_9.1.0-virt.riscv64.xml               |   1 +
 tests/domaincapsdata/qemu_9.1.0.s390x.xml     |   1 +
 tests/domaincapsdata/qemu_9.1.0.x86_64.xml    |   1 +
 .../qemu_9.2.0-hvf.aarch64+hvf.xml            |   1 +
 .../qemu_9.2.0-q35.x86_64+amdsev.xml          |   1 +
 .../domaincapsdata/qemu_9.2.0-q35.x86_64.xml  |   1 +
 .../qemu_9.2.0-tcg.x86_64+amdsev.xml          |   1 +
 .../domaincapsdata/qemu_9.2.0-tcg.x86_64.xml  |   1 +
 tests/domaincapsdata/qemu_9.2.0.s390x.xml     |   1 +
 .../qemu_9.2.0.x86_64+amdsev.xml              |   1 +
 tests/domaincapsdata/qemu_9.2.0.x86_64.xml    |   1 +
 .../caps_10.0.0_aarch64.xml                   |   1 +
 .../caps_10.0.0_x86_64+amdsev.xml             |   1 +
 .../caps_10.0.0_x86_64.xml                    |   1 +
 .../caps_10.1.0_s390x.xml                     |   1 +
 .../caps_10.1.0_x86_64+inteltdx.xml           |   1 +
 .../caps_10.1.0_x86_64.xml                    |   1 +
 .../caps_10.2.0_aarch64.xml                   |   1 +
 .../caps_10.2.0_x86_64+mshv.xml               |   1 +
 .../caps_10.2.0_x86_64.xml                    |   1 +
 .../caps_11.0.0_aarch64.xml                   |   1 +
 .../caps_11.0.0_x86_64.xml                    |   1 +
 .../etc/qemu/firmware/20-bios.json            |   1 -
 .../etc/qemu/firmware/20-libvirt-bios.json    |   1 +
 .../etc/qemu/firmware/59-combined.json        |   1 -
 .../qemu/firmware/59-libvirt-combined.json    |   1 +
 ...{92-masked.json => 92-libvirt-masked.json} |   0
 .../{10-bios.json => 10-libvirt-bios.json}    |   0
 ...0-edk2-ovmf-qemuvars-x64-sb-enrolled.json} |  15 +-
 .../70-edk2-qemuvars-aarch64-sb-enrolled.json |  28 +++
 ...json => 71-edk2-ovmf-qemuvars-x64-sb.json} |  16 +-
 .../firmware/71-edk2-qemuvars-aarch64-sb.json |  27 +++
 ...combined.json => 90-libvirt-combined.json} |   0
 .../{91-bios.json => 91-libvirt-bios.json}    |   2 +-
 ...{92-masked.json => 92-libvirt-masked.json} |   0
 ...3-invalid.json => 93-libvirt-invalid.json} |   0
 tests/qemufirmwaretest.c                      |  71 ++++---
 ...-auto-bios-not-stateless.x86_64-latest.err |   2 +-
 ...auto-bios-not-stateless.x86_64-latest.xml} |   6 +-
 ...firmware-auto-bios-nvram.x86_64-latest.err |   2 +-
 ...are-auto-bios-stateless.x86_64-latest.args |   2 +-
 ...ware-auto-bios-stateless.x86_64-latest.xml |   2 +-
 .../firmware-auto-bios.x86_64-latest.args     |   2 +-
 .../firmware-auto-bios.x86_64-latest.xml      |   2 +-
 ...fi-enrolled-keys-aarch64.aarch64-8.2.0.err |   1 +
 ...enrolled-keys-aarch64.aarch64-latest.args} |  12 +-
 ...i-enrolled-keys-aarch64.aarch64-latest.xml |  32 +++
 ...irmware-auto-efi-enrolled-keys-aarch64.xml |  20 ++
 ...-efi-varstore-aarch64.aarch64-latest.args} |  12 +-
 ...to-efi-varstore-aarch64.aarch64-latest.xml |  32 +++
 .../firmware-auto-efi-varstore-aarch64.xml    |  18 ++
 ...-auto-efi-varstore-q35.x86_64-latest.args} |   5 +-
 ...e-auto-efi-varstore-q35.x86_64-latest.xml} |  11 +-
 .../firmware-auto-efi-varstore-q35.xml        |  18 ++
 ...ual-bios-not-stateless.x86_64-latest.args} |   8 +-
 ...anual-bios-not-stateless.x86_64-latest.err |   1 -
 ...nual-bios-not-stateless.x86_64-latest.xml} |   2 +-
 ...re-manual-bios-stateless.x86_64-latest.xml |   6 +-
 .../firmware-manual-bios.x86_64-latest.xml    |   6 +-
 ...nual-efi-nvram-stateless.x86_64-latest.err |   2 +-
 ...nvram-template-stateless.x86_64-latest.err |   2 +-
 ...ware-manual-efi-rw-nvram.x86_64-latest.err |   2 +-
 ...ual-efi-varstore-aarch64.aarch64-8.2.0.err |   1 +
 ...-efi-varstore-aarch64.aarch64-latest.args} |  12 +-
 ...al-efi-varstore-aarch64.aarch64-latest.xml |  32 +++
 .../firmware-manual-efi-varstore-aarch64.xml  |  19 ++
 ...e-manual-efi-varstore-q35.x86_64-8.2.0.err |   1 +
 ...anual-efi-varstore-q35.x86_64-latest.args} |   5 +-
 ...manual-efi-varstore-q35.x86_64-latest.xml} |  11 +-
 .../firmware-manual-efi-varstore-q35.xml      |  19 ++
 tests/qemuxmlconftest.c                       |  16 +-
 tests/testutilsqemu.c                         |   2 +
 tools/virsh-domain.c                          |  55 ++++--
 tools/virsh-snapshot.c                        |   9 +-
 179 files changed, 1296 insertions(+), 380 deletions(-)
 delete mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/20-bios.json
 create mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/20-libvirt-bios.json
 delete mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/59-combined.json
 create mode 120000 tests/qemufirmwaredata/etc/qemu/firmware/59-libvirt-combined.json
 rename tests/qemufirmwaredata/etc/qemu/firmware/{92-masked.json => 92-libvirt-masked.json} (100%)
 rename tests/qemufirmwaredata/home/user/.config/qemu/firmware/{10-bios.json => 10-libvirt-bios.json} (100%)
 copy tests/qemufirmwaredata/usr/share/qemu/firmware/{90-combined.json => 70-edk2-ovmf-qemuvars-x64-sb-enrolled.json} (55%)
 create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/70-edk2-qemuvars-aarch64-sb-enrolled.json
 copy tests/qemufirmwaredata/usr/share/qemu/firmware/{90-combined.json => 71-edk2-ovmf-qemuvars-x64-sb.json} (51%)
 create mode 100644 tests/qemufirmwaredata/usr/share/qemu/firmware/71-edk2-qemuvars-aarch64-sb.json
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{90-combined.json => 90-libvirt-combined.json} (100%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{91-bios.json => 91-libvirt-bios.json} (90%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{92-masked.json => 92-libvirt-masked.json} (100%)
 rename tests/qemufirmwaredata/usr/share/qemu/firmware/{93-invalid.json => 93-libvirt-invalid.json} (100%)
 copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.xml => firmware-auto-bios-not-stateless.x86_64-latest.xml} (84%)
 create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.aarch64-8.2.0.err
 copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-auto-efi-enrolled-keys-aarch64.aarch64-latest.args} (72%)
 create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.aarch64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-enrolled-keys-aarch64.xml
 copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-auto-efi-varstore-aarch64.aarch64-latest.args} (72%)
 create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-varstore-aarch64.aarch64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-varstore-aarch64.xml
 copy tests/qemuxmlconfdata/{firmware-auto-bios-stateless.x86_64-latest.args => firmware-auto-efi-varstore-q35.x86_64-latest.args} (83%)
 copy tests/qemuxmlconfdata/{firmware-auto-bios-stateless.x86_64-latest.xml => firmware-auto-efi-varstore-q35.x86_64-latest.xml} (73%)
 create mode 100644 tests/qemuxmlconfdata/firmware-auto-efi-varstore-q35.xml
 copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-manual-bios-not-stateless.x86_64-latest.args} (84%)
 delete mode 100644 tests/qemuxmlconfdata/firmware-manual-bios-not-stateless.x86_64-latest.err
 copy tests/qemuxmlconfdata/{firmware-manual-bios.x86_64-latest.xml => firmware-manual-bios-not-stateless.x86_64-latest.xml} (90%)
 create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-aarch64.aarch64-8.2.0.err
 copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-manual-efi-varstore-aarch64.aarch64-latest.args} (73%)
 create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-aarch64.aarch64-latest.xml
 create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-aarch64.xml
 create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-q35.x86_64-8.2.0.err
 copy tests/qemuxmlconfdata/{firmware-auto-bios.x86_64-latest.args => firmware-manual-efi-varstore-q35.x86_64-latest.args} (85%)
 copy tests/qemuxmlconfdata/{firmware-auto-bios-stateless.x86_64-latest.xml => firmware-manual-efi-varstore-q35.x86_64-latest.xml} (74%)
 create mode 100644 tests/qemuxmlconfdata/firmware-manual-efi-varstore-q35.xml

-- 
2.53.0