[PATCH V2 1/3] conf: Add USB redirect devices to domain capabilities

Jim Fehlig jfehlig at suse.com
Wed Oct 12 23:24:48 UTC 2022


As qemu becomes more modularized, it is important for libvirt to advertise
availability of the modularized functionality through capabilities. This
change adds USB redirect devices to domain capabilities, allowing clients
such as virt-install to avoid using redirdev devices when not supported
by the target qemu.

Signed-off-by: Jim Fehlig <jfehlig at suse.com>
---
 docs/formatdomaincaps.rst                     | 22 +++++++++++++++++++
 src/conf/domain_capabilities.c                | 13 +++++++++++
 src/conf/domain_capabilities.h                |  8 +++++++
 src/conf/schemas/domaincaps.rng               | 10 +++++++++
 src/qemu/qemu_capabilities.c                  | 17 ++++++++++++++
 src/qemu/qemu_capabilities.h                  |  3 +++
 .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml  |  5 +++++
 .../qemu_4.2.0-virt.aarch64.xml               |  1 +
 tests/domaincapsdata/qemu_4.2.0.aarch64.xml   |  1 +
 tests/domaincapsdata/qemu_4.2.0.ppc64.xml     |  1 +
 tests/domaincapsdata/qemu_4.2.0.s390x.xml     |  5 +++++
 tests/domaincapsdata/qemu_4.2.0.x86_64.xml    |  5 +++++
 .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml  |  5 +++++
 .../qemu_5.0.0-virt.aarch64.xml               |  1 +
 tests/domaincapsdata/qemu_5.0.0.aarch64.xml   |  1 +
 tests/domaincapsdata/qemu_5.0.0.ppc64.xml     |  1 +
 tests/domaincapsdata/qemu_5.0.0.x86_64.xml    |  5 +++++
 .../domaincapsdata/qemu_5.1.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_5.1.0-tcg.x86_64.xml  |  5 +++++
 tests/domaincapsdata/qemu_5.1.0.sparc.xml     |  5 +++++
 tests/domaincapsdata/qemu_5.1.0.x86_64.xml    |  5 +++++
 .../domaincapsdata/qemu_5.2.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_5.2.0-tcg.x86_64.xml  |  5 +++++
 .../qemu_5.2.0-virt.aarch64.xml               |  1 +
 tests/domaincapsdata/qemu_5.2.0.aarch64.xml   |  1 +
 tests/domaincapsdata/qemu_5.2.0.ppc64.xml     |  1 +
 tests/domaincapsdata/qemu_5.2.0.s390x.xml     |  5 +++++
 tests/domaincapsdata/qemu_5.2.0.x86_64.xml    |  5 +++++
 .../domaincapsdata/qemu_6.0.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_6.0.0-tcg.x86_64.xml  |  5 +++++
 .../qemu_6.0.0-virt.aarch64.xml               |  1 +
 tests/domaincapsdata/qemu_6.0.0.aarch64.xml   |  1 +
 tests/domaincapsdata/qemu_6.0.0.s390x.xml     |  5 +++++
 tests/domaincapsdata/qemu_6.0.0.x86_64.xml    |  5 +++++
 .../domaincapsdata/qemu_6.1.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_6.1.0-tcg.x86_64.xml  |  5 +++++
 tests/domaincapsdata/qemu_6.1.0.x86_64.xml    |  5 +++++
 .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml  |  5 +++++
 .../qemu_6.2.0-virt.aarch64.xml               |  5 +++++
 tests/domaincapsdata/qemu_6.2.0.aarch64.xml   |  5 +++++
 tests/domaincapsdata/qemu_6.2.0.ppc64.xml     |  1 +
 tests/domaincapsdata/qemu_6.2.0.x86_64.xml    |  5 +++++
 .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml  |  5 +++++
 .../qemu_7.0.0-virt.aarch64.xml               |  5 +++++
 tests/domaincapsdata/qemu_7.0.0.aarch64.xml   |  5 +++++
 tests/domaincapsdata/qemu_7.0.0.ppc64.xml     |  5 +++++
 tests/domaincapsdata/qemu_7.0.0.x86_64.xml    |  5 +++++
 .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml  |  5 +++++
 .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml  |  5 +++++
 tests/domaincapsdata/qemu_7.1.0.x86_64.xml    |  5 +++++
 54 files changed, 265 insertions(+)

diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst
index afade16bc0..93d36f2702 100644
--- a/docs/formatdomaincaps.rst
+++ b/docs/formatdomaincaps.rst
@@ -543,6 +543,28 @@ TPM device capabilities are exposed under the ``tpm`` element. For instance:
 ``backendVersion``
    Options for the ``version`` attribute of the ``<tpm><backend/>`` element.
 
+USB redirect device
+^^^^^^^^^^^^^^^^^^^
+
+USB redirdev device capabilities are exposed under the ``redirdev`` element. For instance:
+
+::
+
+  <domainCapabilities>
+    ...
+    <devices>
+      <redirdev supported='yes'>
+        <enum name='bus'>
+          <value>usb</value>
+        </enum>
+      </redirdev>
+      ...
+    </devices>
+  </domainCapabilities>
+
+``bus``
+   Options for the ``bus`` attribute of the ``<redirdev/>`` element.
+
 Features
 ~~~~~~~~
 
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index b5d8288982..f8b2f88376 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -562,6 +562,18 @@ virDomainCapsDeviceFilesystemFormat(virBuffer *buf,
 }
 
 
+static void
+virDomainCapsDeviceRedirdevFormat(virBuffer *buf,
+                                  const virDomainCapsDeviceRedirdev *redirdev)
+{
+    FORMAT_PROLOGUE(redirdev);
+
+    ENUM_PROCESS(redirdev, bus, virDomainRedirdevBusTypeToString);
+
+    FORMAT_EPILOGUE(redirdev);
+}
+
+
 /**
  * virDomainCapsFeatureGICFormat:
  * @buf: target buffer
@@ -675,6 +687,7 @@ virDomainCapsFormat(const virDomainCaps *caps)
     virDomainCapsDeviceRNGFormat(&buf, &caps->rng);
     virDomainCapsDeviceFilesystemFormat(&buf, &caps->filesystem);
     virDomainCapsDeviceTPMFormat(&buf, &caps->tpm);
+    virDomainCapsDeviceRedirdevFormat(&buf, &caps->redirdev);
 
     virBufferAdjustIndent(&buf, -2);
     virBufferAddLit(&buf, "</devices>\n");
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index f5fa1fb8e3..ba7c2a5e42 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -130,6 +130,13 @@ struct _virDomainCapsDeviceTPM {
     virDomainCapsEnum backendVersion; /* virDomainTPMVersion */
 };
 
+STATIC_ASSERT_ENUM(VIR_DOMAIN_REDIRDEV_BUS_LAST);
+typedef struct _virDomainCapsDeviceRedirdev virDomainCapsDeviceRedirdev;
+struct _virDomainCapsDeviceRedirdev {
+    virTristateBool supported;
+    virDomainCapsEnum bus;   /* virDomainRedirdevBus */
+};
+
 STATIC_ASSERT_ENUM(VIR_DOMAIN_FS_DRIVER_TYPE_LAST);
 typedef struct _virDomainCapsDeviceFilesystem virDomainCapsDeviceFilesystem;
 struct _virDomainCapsDeviceFilesystem {
@@ -226,6 +233,7 @@ struct _virDomainCaps {
     virDomainCapsDeviceRNG rng;
     virDomainCapsDeviceFilesystem filesystem;
     virDomainCapsDeviceTPM tpm;
+    virDomainCapsDeviceRedirdev redirdev;
     /* add new domain devices here */
 
     virDomainCapsFeatureGIC gic;
diff --git a/src/conf/schemas/domaincaps.rng b/src/conf/schemas/domaincaps.rng
index c4cb9afeba..cf7a1d1d89 100644
--- a/src/conf/schemas/domaincaps.rng
+++ b/src/conf/schemas/domaincaps.rng
@@ -198,6 +198,9 @@
       <optional>
         <ref name="tpm"/>
       </optional>
+      <optional>
+        <ref name="redirdev"/>
+      </optional>
     </element>
   </define>
 
@@ -250,6 +253,13 @@
     </element>
   </define>
 
+  <define name="redirdev">
+    <element name="redirdev">
+      <ref name="supported"/>
+      <ref name="enum"/>
+    </element>
+  </define>
+
   <define name="features">
     <element name="features">
       <optional>
diff --git a/src/qemu/qemu_capabilities.c b/src/qemu/qemu_capabilities.c
index 04b2eef215..5a664ec628 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -6333,6 +6333,21 @@ virQEMUCapsFillDomainDeviceTPMCaps(virQEMUCaps *qemuCaps,
 }
 
 
+void
+virQEMUCapsFillDomainDeviceRedirdevCaps(virQEMUCaps *qemuCaps,
+                                        virDomainCapsDeviceRedirdev *redirdev)
+{
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_USB_REDIR)) {
+        redirdev->supported = VIR_TRISTATE_BOOL_YES;
+        redirdev->bus.report = true;
+        VIR_DOMAIN_CAPS_ENUM_SET(redirdev->bus, VIR_DOMAIN_REDIRDEV_BUS_USB);
+    } else {
+        redirdev->supported = VIR_TRISTATE_BOOL_NO;
+    }
+}
+
+
+
 /**
  * virQEMUCapsSupportsGICVersion:
  * @qemuCaps: QEMU capabilities
@@ -6468,6 +6483,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
     virDomainCapsDeviceRNG *rng = &domCaps->rng;
     virDomainCapsDeviceFilesystem *filesystem = &domCaps->filesystem;
     virDomainCapsDeviceTPM *tpm = &domCaps->tpm;
+    virDomainCapsDeviceRedirdev *redirdev = &domCaps->redirdev;
     virDomainCapsMemoryBacking *memoryBacking = &domCaps->memoryBacking;
 
     virQEMUCapsFillDomainFeaturesFromQEMUCaps(qemuCaps, domCaps);
@@ -6500,6 +6516,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
     virQEMUCapsFillDomainDeviceRNGCaps(qemuCaps, rng);
     virQEMUCapsFillDomainDeviceFSCaps(qemuCaps, filesystem);
     virQEMUCapsFillDomainDeviceTPMCaps(qemuCaps, tpm);
+    virQEMUCapsFillDomainDeviceRedirdevCaps(qemuCaps, redirdev);
     virQEMUCapsFillDomainFeatureGICCaps(qemuCaps, domCaps);
     virQEMUCapsFillDomainFeatureSEVCaps(qemuCaps, domCaps);
     virQEMUCapsFillDomainFeatureS390PVCaps(qemuCaps, domCaps);
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 4b2782c462..051bfbc0a1 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -830,6 +830,9 @@ void virQEMUCapsFillDomainDeviceFSCaps(virQEMUCaps *qemuCaps,
 void virQEMUCapsFillDomainDeviceTPMCaps(virQEMUCaps *qemuCaps,
                                         virDomainCapsDeviceTPM *tpm);
 
+void virQEMUCapsFillDomainDeviceRedirdevCaps(virQEMUCaps *qemuCaps,
+                                             virDomainCapsDeviceRedirdev *redirdev);
+
 bool virQEMUCapsGuestIsNative(virArch host,
                               virArch guest);
 
diff --git a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
index dab12e5888..5b83883e39 100644
--- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
@@ -216,6 +216,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
index 6dc6decf1e..ab55ec2452 100644
--- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
@@ -231,6 +231,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml
index 51581c1816..e0af576d5c 100644
--- a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml
@@ -165,6 +165,7 @@
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml
index c993e0e7d1..61839a1983 100644
--- a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml
@@ -163,6 +163,7 @@
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml
index 7093c35355..1626d9b186 100644
--- a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml
@@ -136,6 +136,7 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_4.2.0.s390x.xml b/tests/domaincapsdata/qemu_4.2.0.s390x.xml
index 3187e637d3..ee07f4c274 100644
--- a/tests/domaincapsdata/qemu_4.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.s390x.xml
@@ -238,6 +238,11 @@
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
index d9c12424c6..a6eaf7962f 100644
--- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
@@ -216,6 +216,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
index 52c5d235bb..232f1f0e12 100644
--- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
@@ -218,6 +218,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
index 8a0f20b06f..ce2c08f205 100644
--- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
@@ -233,6 +233,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml
index 8fe15c0bcb..9215371d0c 100644
--- a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml
@@ -177,6 +177,7 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml
index 49380bd218..fcc77ad8db 100644
--- a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml
@@ -175,6 +175,7 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml
index b944723885..711ccc2cb0 100644
--- a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml
@@ -142,6 +142,7 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
index d9b7c31448..f52613f584 100644
--- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
@@ -218,6 +218,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
index 0917fb3e94..542d32b018 100644
--- a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
@@ -219,6 +219,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
index b2dc0cecca..8bd5c6073c 100644
--- a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
@@ -233,6 +233,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.1.0.sparc.xml b/tests/domaincapsdata/qemu_5.1.0.sparc.xml
index 5c1c0c4680..ea4d1d28dd 100644
--- a/tests/domaincapsdata/qemu_5.1.0.sparc.xml
+++ b/tests/domaincapsdata/qemu_5.1.0.sparc.xml
@@ -105,6 +105,11 @@
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml
index abddcd6e62..5c48efc8c6 100644
--- a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml
@@ -219,6 +219,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
index f441139af2..70c4f3cbd1 100644
--- a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
@@ -219,6 +219,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
index 690fba9fc2..636a84e55f 100644
--- a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
@@ -233,6 +233,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
index a6363b0aad..900d10f720 100644
--- a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
@@ -177,6 +177,7 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml
index 49380bd218..fcc77ad8db 100644
--- a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml
@@ -175,6 +175,7 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml
index 71f47c8748..99c2767276 100644
--- a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml
@@ -142,6 +142,7 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0.s390x.xml b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
index 84820332e4..bdade9c5bb 100644
--- a/tests/domaincapsdata/qemu_5.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
@@ -240,6 +240,11 @@
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml
index 27a3af5ba0..db22085e31 100644
--- a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml
@@ -219,6 +219,11 @@
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
index 56f2ee8b15..395eb3b9eb 100644
--- a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
@@ -221,6 +221,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
index dab11a82d6..769a1147b6 100644
--- a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
@@ -235,6 +235,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
index 68f3a523f4..2f56e36c28 100644
--- a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
@@ -179,6 +179,7 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml
index c9830c3b25..4639a84c1d 100644
--- a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml
@@ -177,6 +177,7 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0.s390x.xml b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
index d0375c68ef..25abcac608 100644
--- a/tests/domaincapsdata/qemu_6.0.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
@@ -241,6 +241,11 @@
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml
index 338a9a7494..2be8f3e33b 100644
--- a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml
@@ -221,6 +221,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
index c023a72dec..f23e758b1a 100644
--- a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
@@ -222,6 +222,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
index 18da71d0a7..f78abdefc5 100644
--- a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
@@ -235,6 +235,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml
index de17a784f6..9de18c682e 100644
--- a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml
@@ -222,6 +222,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
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 f767ded170..dff92d65aa 100644
--- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
@@ -222,6 +222,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
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 5122df5419..f027eb25a5 100644
--- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
@@ -236,6 +236,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
index c356fc21d4..c572b0481c 100644
--- a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
@@ -181,6 +181,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml
index 9e817d15e4..eb521a0cfa 100644
--- a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml
@@ -179,6 +179,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
index bf2c679c51..7797b94cf2 100644
--- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
@@ -141,6 +141,7 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
index bdce41d4db..aff2ee6662 100644
--- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
@@ -222,6 +222,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
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 e7850eafcf..e70b0990a7 100644
--- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
@@ -223,6 +223,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
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 53b0de03e7..03c5411c4e 100644
--- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
@@ -237,6 +237,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
index 96c8fbfdf3..59f89afd9b 100644
--- a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
@@ -180,6 +180,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='yes'>
diff --git a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml
index ce0a313bb9..1e6bf544dc 100644
--- a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml
@@ -178,6 +178,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
index 8f6f9f57e1..76da1f4f7d 100644
--- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
@@ -142,6 +142,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
index ccee94df7a..da23f5703a 100644
--- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
@@ -223,6 +223,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
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 6e3df1e24b..05b36ee79e 100644
--- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
@@ -222,6 +222,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
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 61aa269741..0786cd8430 100644
--- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
@@ -235,6 +235,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
index e1218e3f16..ae67a16947 100644
--- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
@@ -222,6 +222,11 @@
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
-- 
2.37.3



More information about the libvir-list mailing list