[PATCH v2 23/38] qemu: Fill in varstore element in domcaps

Andrea Bolognani via Devel posted 38 patches 12 hours ago
[PATCH v2 23/38] qemu: Fill in varstore element in domcaps
Posted by Andrea Bolognani via Devel 12 hours ago
The element should only be advertised as supported if the QEMU
binary contains the necessary device and a suitable JSON firmware
descriptor is found on the system. Right now the latter
requirement is not satisfied, so it's marked as not supported
across the board.

The qemufirmware test is extended to cover the new attribute.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 src/qemu/qemu_capabilities.c                  | 26 +++++++++++++++-
 src/qemu/qemu_firmware.c                      |  6 ++++
 src/qemu/qemu_firmware.h                      |  1 +
 .../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 +
 tests/qemufirmwaretest.c                      | 31 +++++++++++++------
 86 files changed, 135 insertions(+), 11 deletions(-)

diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index ce3e288b15..ccc19e1ed4 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -6512,8 +6512,26 @@ virQEMUCapsFillDomainLoaderCaps(virDomainCapsLoader *capsLoader,
 }
 
 
+static int
+virQEMUCapsFillDomainVarstoreCaps(virDomainCapsVarstore *capsVarstore,
+                                  bool varstore,
+                                  virQEMUCaps *qemuCaps)
+{
+    /* varstore is advertised as supported only if firmware
+     * descriptors that use it exist and the QEMU binary has the
+     * necessary device compiled in */
+    if (varstore && virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_UEFI_VARS))
+        capsVarstore->supported = VIR_TRISTATE_BOOL_YES;
+    else
+        capsVarstore->supported = VIR_TRISTATE_BOOL_NO;
+
+    return 0;
+}
+
+
 static int
 virQEMUCapsFillDomainOSCaps(virDomainCapsOS *os,
+                            virQEMUCaps *qemuCaps,
                             const char *machine,
                             virArch arch,
                             bool privileged,
@@ -6521,8 +6539,10 @@ virQEMUCapsFillDomainOSCaps(virDomainCapsOS *os,
                             size_t nfirmwares)
 {
     virDomainCapsLoader *capsLoader = &os->loader;
+    virDomainCapsVarstore *capsVarstore = &os->varstore;
     uint64_t autoFirmwares = 0;
     bool secure = false;
+    bool varstore = false;
     virFirmware **firmwaresAlt = NULL;
     size_t nfirmwaresAlt = 0;
     int ret = -1;
@@ -6531,7 +6551,7 @@ virQEMUCapsFillDomainOSCaps(virDomainCapsOS *os,
     os->firmware.report = true;
 
     if (qemuFirmwareGetSupported(machine, arch, privileged,
-                                 &autoFirmwares, &secure,
+                                 &autoFirmwares, &secure, &varstore,
                                  &firmwaresAlt, &nfirmwaresAlt) < 0)
         return -1;
 
@@ -6545,6 +6565,9 @@ virQEMUCapsFillDomainOSCaps(virDomainCapsOS *os,
                                         firmwaresAlt ? nfirmwaresAlt : nfirmwares) < 0)
         goto cleanup;
 
+    if (virQEMUCapsFillDomainVarstoreCaps(capsVarstore, varstore, qemuCaps) < 0)
+        goto cleanup;
+
     ret = 0;
  cleanup:
     virFirmwareFreeList(firmwaresAlt, nfirmwaresAlt);
@@ -7256,6 +7279,7 @@ virQEMUCapsFillDomainCaps(virQEMUDriverConfig *cfg,
     }
 
     if (virQEMUCapsFillDomainOSCaps(os,
+                                    qemuCaps,
                                     domCaps->machine,
                                     domCaps->arch,
                                     privileged,
diff --git a/src/qemu/qemu_firmware.c b/src/qemu/qemu_firmware.c
index d9f2ee4889..1d7b5b58b7 100644
--- a/src/qemu/qemu_firmware.c
+++ b/src/qemu/qemu_firmware.c
@@ -2032,6 +2032,7 @@ qemuFirmwareFillDomain(virQEMUDriver *driver,
  * @privileged: whether running as privileged user
  * @supported: returned bitmap of supported interfaces
  * @secure: true if at least one secure boot enabled FW was found
+ * @varstore: true if at least one FW using varstore was found
  * @fws: (optional) list of found firmwares
  * @nfws: (optional) number of members in @fws
  *
@@ -2061,6 +2062,7 @@ qemuFirmwareGetSupported(const char *machine,
                          bool privileged,
                          uint64_t *supported,
                          bool *secure,
+                         bool *varstore,
                          virFirmware ***fws,
                          size_t *nfws)
 {
@@ -2070,6 +2072,7 @@ qemuFirmwareGetSupported(const char *machine,
 
     *supported = VIR_DOMAIN_OS_DEF_FIRMWARE_NONE;
     *secure = false;
+    *varstore = false;
 
     if (fws) {
         *fws = NULL;
@@ -2139,6 +2142,9 @@ qemuFirmwareGetSupported(const char *machine,
         case QEMU_FIRMWARE_DEVICE_MEMORY:
             fwpath = memory->filename;
             nvrampath = memory->template;
+
+            if (memory->template)
+                *varstore = true;
             break;
 
         case QEMU_FIRMWARE_DEVICE_NONE:
diff --git a/src/qemu/qemu_firmware.h b/src/qemu/qemu_firmware.h
index 39572d979d..8b14a4cdb8 100644
--- a/src/qemu/qemu_firmware.h
+++ b/src/qemu/qemu_firmware.h
@@ -53,6 +53,7 @@ qemuFirmwareGetSupported(const char *machine,
                          bool privileged,
                          uint64_t *supported,
                          bool *secure,
+                         bool *varstore,
                          virFirmware ***fws,
                          size_t *nfws);
 
diff --git a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml b/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml
index 8cb51d795c..9a19d0aa0d 100644
--- a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml
+++ b/tests/domaincapsdata/qemu_10.0.0-q35.x86_64+amdsev.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml
index 56192354ac..70263ace5f 100644
--- a/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.0.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml b/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml
index 4242f2fe9c..287316da41 100644
--- a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml
+++ b/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64+amdsev.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml
index 76d5fdd0d9..289a794f24 100644
--- a/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.0.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml
index 30863d3d6b..8af13c9061 100644
--- a/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_10.0.0-virt.aarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.0.0.aarch64.xml b/tests/domaincapsdata/qemu_10.0.0.aarch64.xml
index 30863d3d6b..8af13c9061 100644
--- a/tests/domaincapsdata/qemu_10.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_10.0.0.aarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.0.0.ppc64.xml b/tests/domaincapsdata/qemu_10.0.0.ppc64.xml
index 5136e7a20d..48b487a4e1 100644
--- a/tests/domaincapsdata/qemu_10.0.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_10.0.0.ppc64.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.0.0.s390x.xml b/tests/domaincapsdata/qemu_10.0.0.s390x.xml
index 3bbdbd68d0..a7da5401f7 100644
--- a/tests/domaincapsdata/qemu_10.0.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_10.0.0.s390x.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml b/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml
index 8b02db8802..6538c8484e 100644
--- a/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml
+++ b/tests/domaincapsdata/qemu_10.0.0.x86_64+amdsev.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.0.0.x86_64.xml b/tests/domaincapsdata/qemu_10.0.0.x86_64.xml
index 6dac17808c..e156d16868 100644
--- a/tests/domaincapsdata/qemu_10.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.0.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml
index 31d4fab043..7dbb4c22ef 100644
--- a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml
+++ b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64+inteltdx.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml
index 6213908152..76e62a1898 100644
--- a/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.1.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml b/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml
index cace9f109a..8b526899a9 100644
--- a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml
+++ b/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64+inteltdx.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml
index 804848b8a7..9a8e0f86b8 100644
--- a/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.1.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_10.1.0.s390x.xml b/tests/domaincapsdata/qemu_10.1.0.s390x.xml
index 9d773385c4..0f29f72111 100644
--- a/tests/domaincapsdata/qemu_10.1.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_10.1.0.s390x.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml b/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml
index 6320200c20..dbd6d6281e 100644
--- a/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml
+++ b/tests/domaincapsdata/qemu_10.1.0.x86_64+inteltdx.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.1.0.x86_64.xml b/tests/domaincapsdata/qemu_10.1.0.x86_64.xml
index 35c9b8c6d3..d3f44a5a65 100644
--- a/tests/domaincapsdata/qemu_10.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.1.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml
index ebba8fd49f..7ae632edfd 100644
--- a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml
+++ b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64+mshv.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml
index 5ce911d62f..a22283ae95 100644
--- a/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.2.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml b/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml
index 6c6f1e84c3..d33de415d5 100644
--- a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml
+++ b/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64+mshv.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml
index 14e8e30f1c..fabc91a371 100644
--- a/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.2.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_10.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_10.2.0-virt.aarch64.xml
index 84d3022006..a813a63282 100644
--- a/tests/domaincapsdata/qemu_10.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_10.2.0-virt.aarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.2.0.aarch64.xml b/tests/domaincapsdata/qemu_10.2.0.aarch64.xml
index 84d3022006..a813a63282 100644
--- a/tests/domaincapsdata/qemu_10.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_10.2.0.aarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.2.0.x86_64+mshv.xml b/tests/domaincapsdata/qemu_10.2.0.x86_64+mshv.xml
index c8f2585d7d..33721f8604 100644
--- a/tests/domaincapsdata/qemu_10.2.0.x86_64+mshv.xml
+++ b/tests/domaincapsdata/qemu_10.2.0.x86_64+mshv.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_10.2.0.x86_64.xml b/tests/domaincapsdata/qemu_10.2.0.x86_64.xml
index 333bbaa698..d1faa825c9 100644
--- a/tests/domaincapsdata/qemu_10.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_10.2.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_11.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_11.0.0-q35.x86_64.xml
index be89b0a4f2..88b80ccbb7 100644
--- a/tests/domaincapsdata/qemu_11.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_11.0.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_11.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_11.0.0-tcg.x86_64.xml
index bb611142b3..47b05b16f4 100644
--- a/tests/domaincapsdata/qemu_11.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_11.0.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_11.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_11.0.0-virt.aarch64.xml
index 906e3c1e68..c37401a04d 100644
--- a/tests/domaincapsdata/qemu_11.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_11.0.0-virt.aarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_11.0.0.aarch64.xml b/tests/domaincapsdata/qemu_11.0.0.aarch64.xml
index 906e3c1e68..c37401a04d 100644
--- a/tests/domaincapsdata/qemu_11.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_11.0.0.aarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_11.0.0.x86_64.xml b/tests/domaincapsdata/qemu_11.0.0.x86_64.xml
index 956d59f877..4b7ac8019f 100644
--- a/tests/domaincapsdata/qemu_11.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_11.0.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
index b14cbddc59..44a93b4d92 100644
--- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
index 51547bf505..a232cf6aa8 100644
--- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
index 411925ad66..66c5e62d06 100644
--- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
index ab387c862e..a4265c123f 100644
--- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
index 4bbcb516ec..a510b198a8 100644
--- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
index 839f0600c2..937028be67 100644
--- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
index 147d1bf7fb..d3a69fb64d 100644
--- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
index 612b5a44cc..ce65357b25 100644
--- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
index a031b673dd..30e4fc2b95 100644
--- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
index 9360f8fadf..4c24fb7f69 100644
--- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
index f3a2dfe6ff..db04bc1b04 100644
--- a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
index 6738d8f852..8acb84dbe9 100644
--- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml
index b338bcc470..c2e1da8a3a 100644
--- a/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml
+++ b/tests/domaincapsdata/qemu_7.2.0-hvf.x86_64+hvf.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml
index 39eb10dc7a..d7ba18021b 100644
--- a/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.2.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml
index 77fce0eb95..6c5c792377 100644
--- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml
+++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64+hvf.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml
index 77fce0eb95..6c5c792377 100644
--- a/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.2.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.2.0.ppc.xml b/tests/domaincapsdata/qemu_7.2.0.ppc.xml
index 8bda6af431..6f949f2ef2 100644
--- a/tests/domaincapsdata/qemu_7.2.0.ppc.xml
+++ b/tests/domaincapsdata/qemu_7.2.0.ppc.xml
@@ -21,6 +21,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml
index 16708c3d85..7a6526f05b 100644
--- a/tests/domaincapsdata/qemu_7.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.2.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
index 4acd9b76b2..1fdb2e214a 100644
--- a/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
index c8efc8f183..657d2e0efd 100644
--- a/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
index cfa00f3150..1ea0380a2d 100644
--- a/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.0.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
index 83a703da52..d9e8c5bc66 100644
--- a/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
index 725002966d..6e0c2d1e39 100644
--- a/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.1.0.s390x.xml b/tests/domaincapsdata/qemu_8.1.0.s390x.xml
index 0872931dd7..a65b42e451 100644
--- a/tests/domaincapsdata/qemu_8.1.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_8.1.0.s390x.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
index 6a3cb84342..4f3b15846b 100644
--- a/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.1.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
index a25cf01799..6faf0db84c 100644
--- a/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml
index eead5ff076..e90ab2ccb6 100644
--- a/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-tcg-virt.loongarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
index 3b986eb386..9553942985 100644
--- a/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml
index bb563d6e6c..48148a352e 100644
--- a/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-virt.aarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml
index 4d441289a4..4c99753d5e 100644
--- a/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0-virt.loongarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml
index bb563d6e6c..48148a352e 100644
--- a/tests/domaincapsdata/qemu_8.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.aarch64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml
index 5c467d4a14..75117a5ac7 100644
--- a/tests/domaincapsdata/qemu_8.2.0.armv7l.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.armv7l.xml
@@ -21,6 +21,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0.s390x.xml b/tests/domaincapsdata/qemu_8.2.0.s390x.xml
index 5126dd4d00..75148c1250 100644
--- a/tests/domaincapsdata/qemu_8.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.s390x.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
index 57cd4d63de..3a35234cfe 100644
--- a/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_8.2.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
index c7932014ad..db49fcb31f 100644
--- a/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
index 3593d70166..13f2cd611a 100644
--- a/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.0.0.sparc.xml b/tests/domaincapsdata/qemu_9.0.0.sparc.xml
index 6b4dd3c3b5..87e2118272 100644
--- a/tests/domaincapsdata/qemu_9.0.0.sparc.xml
+++ b/tests/domaincapsdata/qemu_9.0.0.sparc.xml
@@ -21,6 +21,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
index 96303a31cd..48f4ebb6b8 100644
--- a/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.0.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
index 518a6811fe..f0802d16d3 100644
--- a/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml b/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml
index ce7fe71141..f900c7bae7 100644
--- a/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-tcg-virt.riscv64.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
index 70928471b3..e18447971b 100644
--- a/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml b/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml
index fabb09bf72..f707650201 100644
--- a/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0-virt.riscv64.xml
@@ -23,6 +23,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.1.0.s390x.xml b/tests/domaincapsdata/qemu_9.1.0.s390x.xml
index d4649de513..9c3f75494f 100644
--- a/tests/domaincapsdata/qemu_9.1.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_9.1.0.s390x.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
index ee101364cc..daeafa98ea 100644
--- a/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.1.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml b/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml
index ae657c7f72..eab6116cc4 100644
--- a/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml
+++ b/tests/domaincapsdata/qemu_9.2.0-hvf.aarch64+hvf.xml
@@ -24,6 +24,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml
index 35dc5785bc..d18d72f96a 100644
--- a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml
+++ b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64+amdsev.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml
index baaaf4f91c..2cfec98f10 100644
--- a/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.2.0-q35.x86_64.xml
@@ -26,6 +26,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml
index 033004a1f4..9db9e93045 100644
--- a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml
+++ b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64+amdsev.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml
index f20fe882c6..97671f67ea 100644
--- a/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.2.0-tcg.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='no'/>
diff --git a/tests/domaincapsdata/qemu_9.2.0.s390x.xml b/tests/domaincapsdata/qemu_9.2.0.s390x.xml
index 21a1b4f5a9..997179b353 100644
--- a/tests/domaincapsdata/qemu_9.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_9.2.0.s390x.xml
@@ -22,6 +22,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml b/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml
index 39390d2ab6..6654a7340d 100644
--- a/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml
+++ b/tests/domaincapsdata/qemu_9.2.0.x86_64+amdsev.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/domaincapsdata/qemu_9.2.0.x86_64.xml b/tests/domaincapsdata/qemu_9.2.0.x86_64.xml
index c477a1d2c4..9e7bf20833 100644
--- a/tests/domaincapsdata/qemu_9.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_9.2.0.x86_64.xml
@@ -25,6 +25,7 @@
         <value>no</value>
       </enum>
     </loader>
+    <varstore supported='no'/>
   </os>
   <cpu>
     <mode name='host-passthrough' supported='yes'>
diff --git a/tests/qemufirmwaretest.c b/tests/qemufirmwaretest.c
index 04d11efb8e..4dd04b22a0 100644
--- a/tests/qemufirmwaretest.c
+++ b/tests/qemufirmwaretest.c
@@ -143,6 +143,7 @@ struct supportedData {
     const char *machine;
     virArch arch;
     bool secure;
+    bool varstore;
     const char *fwlist;
     unsigned int *interfaces;
     size_t ninterfaces;
@@ -156,6 +157,7 @@ testSupportedFW(const void *opaque)
     uint64_t actualInterfaces;
     uint64_t expectedInterfaces = 0;
     bool actualSecure;
+    bool actualVarstore;
     virFirmware **expFWs = NULL;
     size_t nexpFWs = 0;
     virFirmware **actFWs = NULL;
@@ -182,7 +184,8 @@ testSupportedFW(const void *opaque)
     }
 
     if (qemuFirmwareGetSupported(data->machine, data->arch, false,
-                                 &actualInterfaces, &actualSecure, &actFWs, &nactFWs) < 0) {
+                                 &actualInterfaces, &actualSecure,
+                                 &actualVarstore, &actFWs, &nactFWs) < 0) {
         fprintf(stderr, "Unable to get list of supported interfaces\n");
         goto cleanup;
     }
@@ -203,6 +206,14 @@ testSupportedFW(const void *opaque)
         goto cleanup;
     }
 
+    if (actualVarstore != data->varstore) {
+        fprintf(stderr,
+                "Mismatch in varstore support. "
+                "Expected %d got %d\n",
+                data->varstore, actualVarstore);
+        goto cleanup;
+    }
+
     for (i = 0; i < nactFWs; i++) {
         virFirmware *actFW = actFWs[i];
         virFirmware *expFW = NULL;
@@ -290,26 +301,26 @@ mymain(void)
     /* The @fwlist contains pairs of ${FW}:${NVRAM}. If there's
      * no NVRAM expected pass literal "NULL" and test fixes that
      * later. */
-#define DO_SUPPORTED_TEST(machine, arch, secure, fwlist, ...) \
+#define DO_SUPPORTED_TEST(machine, arch, secure, varstore, fwlist, ...) \
     do { \
         unsigned int interfaces[] = {__VA_ARGS__}; \
-        struct supportedData data = {machine, arch, secure, fwlist, \
+        struct supportedData data = {machine, arch, secure, varstore, fwlist, \
                                      interfaces, G_N_ELEMENTS(interfaces)}; \
         if (virTestRun("QEMU FW SUPPORTED " machine " " #arch, \
                        testSupportedFW, &data) < 0) \
             ret = -1; \
     } while (0)
 
-    DO_SUPPORTED_TEST("pc-i440fx-3.1", VIR_ARCH_X86_64, false,
+    DO_SUPPORTED_TEST("pc-i440fx-3.1", VIR_ARCH_X86_64, false, false,
                       "/usr/share/seabios/bios.bin:NULL:"
                       "/usr/share/edk2/ovmf/OVMF_CODE_4M.qcow2:/usr/share/edk2/ovmf/OVMF_VARS_4M.qcow2:"
                       "/usr/share/edk2/ovmf/OVMF_CODE.fd:/usr/share/edk2/ovmf/OVMF_VARS.fd",
                       VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS,
                       VIR_DOMAIN_OS_DEF_FIRMWARE_EFI);
-    DO_SUPPORTED_TEST("pc-i440fx-3.1", VIR_ARCH_I686, false,
+    DO_SUPPORTED_TEST("pc-i440fx-3.1", VIR_ARCH_I686, false, false,
                       "/usr/share/seabios/bios.bin:NULL",
                       VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS);
-    DO_SUPPORTED_TEST("pc-q35-3.1", VIR_ARCH_X86_64, true,
+    DO_SUPPORTED_TEST("pc-q35-3.1", VIR_ARCH_X86_64, true, false,
                       "/usr/share/seabios/bios.bin:NULL:"
                       "/usr/share/edk2/ovmf/OVMF_CODE_4M.secboot.qcow2:/usr/share/edk2/ovmf/OVMF_VARS_4M.secboot.qcow2:"
                       "/usr/share/edk2/ovmf/OVMF_CODE.secboot.fd:/usr/share/edk2/ovmf/OVMF_VARS.secboot.fd:"
@@ -322,19 +333,19 @@ mymain(void)
                       "/usr/share/edk2/ovmf/OVMF.inteltdx.secboot.fd:NULL",
                       VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS,
                       VIR_DOMAIN_OS_DEF_FIRMWARE_EFI);
-    DO_SUPPORTED_TEST("pc-q35-3.1", VIR_ARCH_I686, false,
+    DO_SUPPORTED_TEST("pc-q35-3.1", VIR_ARCH_I686, false, false,
                       "/usr/share/seabios/bios.bin:NULL",
                       VIR_DOMAIN_OS_DEF_FIRMWARE_BIOS);
-    DO_SUPPORTED_TEST("microvm", VIR_ARCH_X86_64, false,
+    DO_SUPPORTED_TEST("microvm", VIR_ARCH_X86_64, false, false,
                       "/usr/share/edk2/ovmf/MICROVM.fd:NULL",
                       VIR_DOMAIN_OS_DEF_FIRMWARE_EFI);
-    DO_SUPPORTED_TEST("virt-3.1", VIR_ARCH_AARCH64, false,
+    DO_SUPPORTED_TEST("virt-3.1", VIR_ARCH_AARCH64, false, false,
                       "/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.qcow2:/usr/share/edk2/aarch64/vars-template-pflash.qcow2:"
                       "/usr/share/edk2/aarch64/QEMU_EFI-silent-pflash.raw:/usr/share/edk2/aarch64/vars-template-pflash.raw:"
                       "/usr/share/edk2/aarch64/QEMU_EFI-pflash.qcow2:/usr/share/edk2/aarch64/vars-template-pflash.qcow2:"
                       "/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw:/usr/share/edk2/aarch64/vars-template-pflash.raw",
                       VIR_DOMAIN_OS_DEF_FIRMWARE_EFI);
-    DO_SUPPORTED_TEST("virt", VIR_ARCH_RISCV64, false,
+    DO_SUPPORTED_TEST("virt", VIR_ARCH_RISCV64, false, false,
                       "/usr/share/edk2/riscv/RISCV_VIRT_CODE.qcow2:/usr/share/edk2/riscv/RISCV_VIRT_VARS.qcow2",
                       VIR_DOMAIN_OS_DEF_FIRMWARE_EFI);
 
-- 
2.53.0