]> xenbits.xensource.com Git - libvirt.git/commitdiff
conf: Add USB redirect devices to domain capabilities
authorJim Fehlig <jfehlig@suse.com>
Tue, 30 Aug 2022 21:29:14 +0000 (15:29 -0600)
committerJim Fehlig <jfehlig@suse.com>
Fri, 14 Oct 2022 22:10:01 +0000 (16:10 -0600)
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@suse.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
55 files changed:
docs/formatdomaincaps.rst
src/conf/domain_capabilities.c
src/conf/domain_capabilities.h
src/conf/schemas/domaincaps.rng
src/qemu/qemu_capabilities.c
src/qemu/qemu_capabilities.h
tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml
tests/domaincapsdata/qemu_4.2.0.aarch64.xml
tests/domaincapsdata/qemu_4.2.0.ppc64.xml
tests/domaincapsdata/qemu_4.2.0.s390x.xml
tests/domaincapsdata/qemu_4.2.0.x86_64.xml
tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml
tests/domaincapsdata/qemu_5.0.0.aarch64.xml
tests/domaincapsdata/qemu_5.0.0.ppc64.xml
tests/domaincapsdata/qemu_5.0.0.x86_64.xml
tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.1.0.sparc.xml
tests/domaincapsdata/qemu_5.1.0.x86_64.xml
tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
tests/domaincapsdata/qemu_5.2.0.aarch64.xml
tests/domaincapsdata/qemu_5.2.0.ppc64.xml
tests/domaincapsdata/qemu_5.2.0.s390x.xml
tests/domaincapsdata/qemu_5.2.0.x86_64.xml
tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
tests/domaincapsdata/qemu_6.0.0.aarch64.xml
tests/domaincapsdata/qemu_6.0.0.s390x.xml
tests/domaincapsdata/qemu_6.0.0.x86_64.xml
tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.1.0.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
tests/domaincapsdata/qemu_6.2.0.aarch64.xml
tests/domaincapsdata/qemu_6.2.0.ppc64.xml
tests/domaincapsdata/qemu_6.2.0.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
tests/domaincapsdata/qemu_7.0.0.aarch64.xml
tests/domaincapsdata/qemu_7.0.0.ppc64.xml
tests/domaincapsdata/qemu_7.0.0.x86_64.xml
tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
tests/domaincapsdata/qemu_7.1.0.ppc64.xml
tests/domaincapsdata/qemu_7.1.0.x86_64.xml

index afade16bc01eec7c60e7634bdf514d5aeb572805..93d36f2702a6b67105803cc01f2934bddd2c83c3 100644 (file)
@@ -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
 ~~~~~~~~
 
index b5d8288982343fbada56596f0e460d494543674c..f8b2f8837600ab9dc658a61416bbdda8c5215ac3 100644 (file)
@@ -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");
index f5fa1fb8e3aa8a5576d3d037a890e743c7c7aa02..ba7c2a5e42277130c69d22dbe40fde5cd65a9402 100644 (file)
@@ -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;
index c4cb9afeba52cec7cb35dbc06aa8d93f4b3af6e1..cf7a1d1d89bacbf9ab1e0a174a5aab3a8fb43a01 100644 (file)
       <optional>
         <ref name="tpm"/>
       </optional>
+      <optional>
+        <ref name="redirdev"/>
+      </optional>
     </element>
   </define>
 
     </element>
   </define>
 
+  <define name="redirdev">
+    <element name="redirdev">
+      <ref name="supported"/>
+      <ref name="enum"/>
+    </element>
+  </define>
+
   <define name="features">
     <element name="features">
       <optional>
index 04b2eef2151c770f8993d18af2374aba90ac2bf3..5a664ec628370b17b429b5fc5bcc2b32c7e5c2fa 100644 (file)
@@ -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);
index 4b2782c4622ee6dfb30197ed0f88d16a47271f97..051bfbc0a15db88c0429da864bcf88f1faec8b0f 100644 (file)
@@ -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);
 
index dab12e588807f100dddb3c89f9d5579c8570f00b..5b83883e39cff1182c64a8a22402c55fbc89cf44 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 6dc6decf1e5312d5f2cf6afd2668531532d9f6aa..ab55ec24528d24859efddd6398dbdf975e8529a5 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 51581c181639058e4ca8cfae83607d3ce085196b..e0af576d5c09d2e4deedf43e7a7b865b713104b6 100644 (file)
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='yes'>
index c993e0e7d15f78698b853db536fdaf816df16e51..61839a198303c7e90a5754aeaeef75d8593ecb5d 100644 (file)
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
index 7093c35355349442461fa541d0804e670b8db2df..1626d9b1862bc8faea62a8ca436cc9d621c49d54 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
index 3187e637d3ea03f7da2176915d19f231f37fc577..ee07f4c2745ee801203039aefa31a90f9eade6f5 100644 (file)
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index d9c12424c67fe6c78ab9dae178f83642ba914c85..a6eaf7962f9f5faa65a4dfd88d34ab6ebb4ed3c4 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 52c5d235bbfb0a9d4da60b6d218bfba755aa4ee2..232f1f0e12c1d466b8380027f77a49428fd21dc3 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 8a0f20b06f77b3b11d2503ac3e3aac26b9eb60fd..ce2c08f205b9549b565f2c245fc75136a5e0fbe0 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 8fe15c0bcbe97829e56b101d0e9363ae04f566f2..9215371d0ccf1c09b7467f04d760ded860bb6ece 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='yes'>
index 49380bd21810be3ee3ce34c47e63320387b03a21..fcc77ad8dbc316e4e86bb0e80f3fa18f08b6c36d 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
index b94472388590701f885527fdb1b12bb8c476ba0f..711ccc2cb0fb6b62c49e8b0f3fe79d9f55b502ec 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
index d9b7c3144825c412e531162f664943a04f8910e4..f52613f58465da94889e63e3d0ead4446eb75a8c 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 0917fb3e9480e25398ffdce8e8b38c93a0372961..542d32b018676dfa6d11dd0c5045bf83a4a2d89b 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index b2dc0cecca6ecb970a23c93cc8ff0eb97114f1bd..8bd5c6073c7ed259b9f50363c07975419168e60c 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 5c1c0c4680db10d7f7e540c24204d8fecc1611d0..ea4d1d28dd4b713c82412f8805eb735c640ef33f 100644 (file)
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index abddcd6e62d7ad0208e2306b12cf308cd484d174..5c48efc8c63a65475db89ee01193d6ecbc181c1a 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index f441139af28e9cb74f27451640badb3327362efd..70c4f3cbd1efc9a73f220ae508664be6feb59696 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 690fba9fc28ccccdb3efd1c196b0f7f920ea07e5..636a84e55fa6e55fc10bd2cce2128682adc7df31 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index a6363b0aad2d54f8235dead887bc84eac10e848d..900d10f720d1f5f4b2dd0ef1faec48aae92012e1 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='yes'>
index 49380bd21810be3ee3ce34c47e63320387b03a21..fcc77ad8dbc316e4e86bb0e80f3fa18f08b6c36d 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
index 71f47c87488ef78b7e7b08e3137c91055597d6b0..99c2767276b9fe33ad07c423bb3000063cbbc249 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
index 84820332e421bb70e87e95d9d8595a092bb78475..bdade9c5bb318bb9152b084725e9a7a0996ee0bb 100644 (file)
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 27a3af5ba0a6dfb020384725683dabfd2b254a64..db22085e31dd66d1e32b2cb3daa8cfb7008aab43 100644 (file)
         <value>1.2</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 56f2ee8b153b01f2bf72b4483a72d8a03ef6d89a..395eb3b9ebdde99f0d84e8ea5072af72464fd665 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index dab11a82d6c30674cb80f326ec392ca757b20133..769a1147b68837e9be9300ba86583fab7912d434 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 68f3a523f48f042e4f5ffd733c4c64e0462567f5..2f56e36c28c44822b1bd66a172115e1bc2976c17 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='yes'>
index c9830c3b25b1ac428ee5c9ec954c4c86cd4dff42..4639a84c1d7ecd22dec37789fa2e569b2395020b 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
index d0375c68efe16bc67abaad708d4381a8b0d8a730..25abcac6088fdf8917330911ca70ae16f6a721cd 100644 (file)
       </enum>
     </filesystem>
     <tpm supported='no'/>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 338a9a749434b9a9c9a1ae91e1cb0e6d71807829..2be8f3e33b062afe8d22969cec394b9adf6401b0 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index c023a72dec45d250327943edf00a5514430873c0..f23e758b1ae5aae7b209f6a2e228a5a9d0041f94 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 18da71d0a766377c243b537cd1038b681660aac1..f78abdefc5e1d6038c2d387742b6f2b148946618 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index de17a784f6b8112b3992647a7304b65954dc870f..9de18c682e1e7259a2ef0a8024df25683d94d0b5 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index f767ded170382c69b30dc459a4e8290d5635a578..dff92d65aa08b12a397ebb7ec015676e724420a2 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 5122df541983db2cf7b0f38f33413da70dfc64aa..f027eb25a5fcde0c40efedd3fc0fa7989e416681 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index c356fc21d48f43599863adae11b0e5fdb8b1ba0e..c572b0481c5e4c35eb20dae2b3099a3c4cdffd85 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='yes'>
index 9e817d15e4b55c9e60cf3ba3fe099c7f9cd74448..eb521a0cfa31248a3e2c6d7f61e186c4db339e85 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index bf2c679c51a5326c7761d3fa1e3ed817b0209378..7797b94cf2549add13afd284878486ad894bb701 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='no'/>
   </devices>
   <features>
     <gic supported='no'/>
index bdce41d4db9215f5daf569de27e96822c6d05cb3..aff2ee6662337cdb6d343fb67f2044ff83d59f54 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index e7850eafcfad4b9cd4233e402e98b498f9514cb5..e70b0990a79cae1e207e8dc53fd467874f25a54b 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 53b0de03e72334e46da15b7edd443b792631a4a8..03c5411c4e8b63ea7c5c034e717d588c28823b85 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 96c8fbfdf39a4fb86aa014559b30160cdef133a4..59f89afd9be33fade61755dc4021e2dd13b8232a 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='yes'>
index ce0a313bb970ade430abb6fdf86e0aa9b46f06d4..1e6bf544dc93ce008de9d2fb7cea535e0ea73a4b 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 8f6f9f57e1e1043ac46a13cdcb8bb969d8e74196..76da1f4f7deca397eb5b4321072ecea7fc3099ab 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index ccee94df7ab42574efb944bb35a56ab677ef95ba..da23f5703a0ab7507c4459a1096f15d113a521e6 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 6e3df1e24b7768da294ad64d588eb91c6b365dc2..05b36ee79e8755985789746aacf1f4b1f124fa5b 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 61aa2697415f520c86b87b4ff47d45a1e8901d38..0786cd8430c1d673f5b72c74ec11648a72c3e30d 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index 95d5115fb1ed8648d3a98c6b7349e327860a1dcf..d430e54caa5b3b329ef5d9a9c44f52397a61a727 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>
index e1218e3f163784efdbd370a220510f7c2c8bfdeb..ae67a16947fdca1d22374d1c8d940beea69c1034 100644 (file)
         <value>2.0</value>
       </enum>
     </tpm>
+    <redirdev supported='yes'>
+      <enum name='bus'>
+        <value>usb</value>
+      </enum>
+    </redirdev>
   </devices>
   <features>
     <gic supported='no'/>