[PATCH V3] conf: Add channel devices to domain capabilities

Jim Fehlig jfehlig at suse.com
Fri Oct 14 22:23:04 UTC 2022


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

Signed-off-by: Jim Fehlig <jfehlig at suse.com>
---

V2:
https://listman.redhat.com/archives/libvir-list/2022-October/234840.html

New in V3:
- rebased to current master
- use existing QEMU_CAPS_SPICE for spicevmc channel device

 docs/formatdomaincaps.rst                     | 24 +++++++++++++++++++
 src/conf/domain_capabilities.c                | 13 ++++++++++
 src/conf/domain_capabilities.h                |  8 +++++++
 src/conf/schemas/domaincaps.rng               | 10 ++++++++
 src/qemu/qemu_capabilities.c                  | 15 ++++++++++++
 src/qemu/qemu_capabilities.h                  |  3 +++
 .../domaincapsdata/qemu_4.2.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_4.2.0-tcg.x86_64.xml  |  7 ++++++
 .../qemu_4.2.0-virt.aarch64.xml               |  6 +++++
 tests/domaincapsdata/qemu_4.2.0.aarch64.xml   |  6 +++++
 tests/domaincapsdata/qemu_4.2.0.ppc64.xml     |  6 +++++
 tests/domaincapsdata/qemu_4.2.0.s390x.xml     |  6 +++++
 tests/domaincapsdata/qemu_4.2.0.x86_64.xml    |  7 ++++++
 .../domaincapsdata/qemu_5.0.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_5.0.0-tcg.x86_64.xml  |  7 ++++++
 .../qemu_5.0.0-virt.aarch64.xml               |  6 +++++
 tests/domaincapsdata/qemu_5.0.0.aarch64.xml   |  6 +++++
 tests/domaincapsdata/qemu_5.0.0.ppc64.xml     |  6 +++++
 tests/domaincapsdata/qemu_5.0.0.x86_64.xml    |  7 ++++++
 .../domaincapsdata/qemu_5.1.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_5.1.0-tcg.x86_64.xml  |  7 ++++++
 tests/domaincapsdata/qemu_5.1.0.sparc.xml     |  7 ++++++
 tests/domaincapsdata/qemu_5.1.0.x86_64.xml    |  7 ++++++
 .../domaincapsdata/qemu_5.2.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_5.2.0-tcg.x86_64.xml  |  7 ++++++
 .../qemu_5.2.0-virt.aarch64.xml               |  6 +++++
 tests/domaincapsdata/qemu_5.2.0.aarch64.xml   |  6 +++++
 tests/domaincapsdata/qemu_5.2.0.ppc64.xml     |  6 +++++
 tests/domaincapsdata/qemu_5.2.0.s390x.xml     |  6 +++++
 tests/domaincapsdata/qemu_5.2.0.x86_64.xml    |  7 ++++++
 .../domaincapsdata/qemu_6.0.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_6.0.0-tcg.x86_64.xml  |  7 ++++++
 .../qemu_6.0.0-virt.aarch64.xml               |  6 +++++
 tests/domaincapsdata/qemu_6.0.0.aarch64.xml   |  6 +++++
 tests/domaincapsdata/qemu_6.0.0.s390x.xml     |  6 +++++
 tests/domaincapsdata/qemu_6.0.0.x86_64.xml    |  7 ++++++
 .../domaincapsdata/qemu_6.1.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_6.1.0-tcg.x86_64.xml  |  7 ++++++
 tests/domaincapsdata/qemu_6.1.0.x86_64.xml    |  7 ++++++
 .../domaincapsdata/qemu_6.2.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_6.2.0-tcg.x86_64.xml  |  7 ++++++
 .../qemu_6.2.0-virt.aarch64.xml               |  7 ++++++
 tests/domaincapsdata/qemu_6.2.0.aarch64.xml   |  7 ++++++
 tests/domaincapsdata/qemu_6.2.0.ppc64.xml     |  6 +++++
 tests/domaincapsdata/qemu_6.2.0.x86_64.xml    |  7 ++++++
 .../domaincapsdata/qemu_7.0.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_7.0.0-tcg.x86_64.xml  |  7 ++++++
 .../qemu_7.0.0-virt.aarch64.xml               |  7 ++++++
 tests/domaincapsdata/qemu_7.0.0.aarch64.xml   |  7 ++++++
 tests/domaincapsdata/qemu_7.0.0.ppc64.xml     |  6 +++++
 tests/domaincapsdata/qemu_7.0.0.x86_64.xml    |  7 ++++++
 .../domaincapsdata/qemu_7.1.0-q35.x86_64.xml  |  7 ++++++
 .../domaincapsdata/qemu_7.1.0-tcg.x86_64.xml  |  7 ++++++
 tests/domaincapsdata/qemu_7.1.0.ppc64.xml     |  6 +++++
 tests/domaincapsdata/qemu_7.1.0.x86_64.xml    |  7 ++++++
 55 files changed, 399 insertions(+)

diff --git a/docs/formatdomaincaps.rst b/docs/formatdomaincaps.rst
index 93d36f2702..f95d3a7083 100644
--- a/docs/formatdomaincaps.rst
+++ b/docs/formatdomaincaps.rst
@@ -565,6 +565,30 @@ USB redirdev device capabilities are exposed under the ``redirdev`` element. For
 ``bus``
    Options for the ``bus`` attribute of the ``<redirdev/>`` element.
 
+Channel device
+^^^^^^^^^^^^^^
+
+Channel device capabilities are exposed under the ``channel`` element. For instance:
+
+::
+
+  <domainCapabilities>
+    ...
+    <devices>
+      <channel supported='yes'>
+        <enum name='type'>
+          <value>pty</value>
+          <value>unix</value>
+          <value>spicevmc</value>
+        </enum>
+      </channel
+      ...
+    </devices>
+  </domainCapabilities>
+
+``type``
+   Options for the ``type`` attribute of the ``<channel/>`` element.
+
 Features
 ~~~~~~~~
 
diff --git a/src/conf/domain_capabilities.c b/src/conf/domain_capabilities.c
index f8b2f88376..a7f256e4ec 100644
--- a/src/conf/domain_capabilities.c
+++ b/src/conf/domain_capabilities.c
@@ -574,6 +574,18 @@ virDomainCapsDeviceRedirdevFormat(virBuffer *buf,
 }
 
 
+static void
+virDomainCapsDeviceChannelFormat(virBuffer *buf,
+                                 const virDomainCapsDeviceChannel *channel)
+{
+    FORMAT_PROLOGUE(channel);
+
+    ENUM_PROCESS(channel, type, virDomainChrTypeToString);
+
+    FORMAT_EPILOGUE(channel);
+}
+
+
 /**
  * virDomainCapsFeatureGICFormat:
  * @buf: target buffer
@@ -688,6 +700,7 @@ virDomainCapsFormat(const virDomainCaps *caps)
     virDomainCapsDeviceFilesystemFormat(&buf, &caps->filesystem);
     virDomainCapsDeviceTPMFormat(&buf, &caps->tpm);
     virDomainCapsDeviceRedirdevFormat(&buf, &caps->redirdev);
+    virDomainCapsDeviceChannelFormat(&buf, &caps->channel);
 
     virBufferAdjustIndent(&buf, -2);
     virBufferAddLit(&buf, "</devices>\n");
diff --git a/src/conf/domain_capabilities.h b/src/conf/domain_capabilities.h
index ba7c2a5e42..e0cfa75531 100644
--- a/src/conf/domain_capabilities.h
+++ b/src/conf/domain_capabilities.h
@@ -137,6 +137,13 @@ struct _virDomainCapsDeviceRedirdev {
     virDomainCapsEnum bus;   /* virDomainRedirdevBus */
 };
 
+STATIC_ASSERT_ENUM(VIR_DOMAIN_CHR_TYPE_LAST);
+typedef struct _virDomainCapsDeviceChannel virDomainCapsDeviceChannel;
+struct _virDomainCapsDeviceChannel {
+    virTristateBool supported;
+    virDomainCapsEnum type;   /* virDomainChrType */
+};
+
 STATIC_ASSERT_ENUM(VIR_DOMAIN_FS_DRIVER_TYPE_LAST);
 typedef struct _virDomainCapsDeviceFilesystem virDomainCapsDeviceFilesystem;
 struct _virDomainCapsDeviceFilesystem {
@@ -234,6 +241,7 @@ struct _virDomainCaps {
     virDomainCapsDeviceFilesystem filesystem;
     virDomainCapsDeviceTPM tpm;
     virDomainCapsDeviceRedirdev redirdev;
+    virDomainCapsDeviceChannel channel;
     /* add new domain devices here */
 
     virDomainCapsFeatureGIC gic;
diff --git a/src/conf/schemas/domaincaps.rng b/src/conf/schemas/domaincaps.rng
index cf7a1d1d89..a6747b20ef 100644
--- a/src/conf/schemas/domaincaps.rng
+++ b/src/conf/schemas/domaincaps.rng
@@ -201,6 +201,9 @@
       <optional>
         <ref name="redirdev"/>
       </optional>
+      <optional>
+        <ref name="channel"/>
+      </optional>
     </element>
   </define>
 
@@ -260,6 +263,13 @@
     </element>
   </define>
 
+  <define name="channel">
+    <element name="channel">
+      <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 40da6f1b50..0f34957998 100644
--- a/src/qemu/qemu_capabilities.c
+++ b/src/qemu/qemu_capabilities.c
@@ -6347,6 +6347,19 @@ virQEMUCapsFillDomainDeviceRedirdevCaps(virQEMUCaps *qemuCaps,
 }
 
 
+void
+virQEMUCapsFillDomainDeviceChannelCaps(virQEMUCaps *qemuCaps,
+                                       virDomainCapsDeviceChannel *channel)
+{
+    channel->supported = VIR_TRISTATE_BOOL_YES;
+    channel->type.report = true;
+    VIR_DOMAIN_CAPS_ENUM_SET(channel->type,
+                             VIR_DOMAIN_CHR_TYPE_PTY, VIR_DOMAIN_CHR_TYPE_UNIX);
+
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_SPICE))
+        VIR_DOMAIN_CAPS_ENUM_SET(channel->type, VIR_DOMAIN_CHR_TYPE_SPICEVMC);
+}
+
 
 /**
  * virQEMUCapsSupportsGICVersion:
@@ -6484,6 +6497,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
     virDomainCapsDeviceFilesystem *filesystem = &domCaps->filesystem;
     virDomainCapsDeviceTPM *tpm = &domCaps->tpm;
     virDomainCapsDeviceRedirdev *redirdev = &domCaps->redirdev;
+    virDomainCapsDeviceChannel *channel = &domCaps->channel;
     virDomainCapsMemoryBacking *memoryBacking = &domCaps->memoryBacking;
 
     virQEMUCapsFillDomainFeaturesFromQEMUCaps(qemuCaps, domCaps);
@@ -6517,6 +6531,7 @@ virQEMUCapsFillDomainCaps(virQEMUCaps *qemuCaps,
     virQEMUCapsFillDomainDeviceFSCaps(qemuCaps, filesystem);
     virQEMUCapsFillDomainDeviceTPMCaps(qemuCaps, tpm);
     virQEMUCapsFillDomainDeviceRedirdevCaps(qemuCaps, redirdev);
+    virQEMUCapsFillDomainDeviceChannelCaps(qemuCaps, channel);
     virQEMUCapsFillDomainFeatureGICCaps(qemuCaps, domCaps);
     virQEMUCapsFillDomainFeatureSEVCaps(qemuCaps, domCaps);
     virQEMUCapsFillDomainFeatureS390PVCaps(qemuCaps, domCaps);
diff --git a/src/qemu/qemu_capabilities.h b/src/qemu/qemu_capabilities.h
index 051bfbc0a1..4edbb5d40f 100644
--- a/src/qemu/qemu_capabilities.h
+++ b/src/qemu/qemu_capabilities.h
@@ -833,6 +833,9 @@ void virQEMUCapsFillDomainDeviceTPMCaps(virQEMUCaps *qemuCaps,
 void virQEMUCapsFillDomainDeviceRedirdevCaps(virQEMUCaps *qemuCaps,
                                              virDomainCapsDeviceRedirdev *redirdev);
 
+void virQEMUCapsFillDomainDeviceChannelCaps(virQEMUCaps *qemuCaps,
+                                            virDomainCapsDeviceChannel *channel);
+
 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 5b83883e39..def80fe8cd 100644
--- a/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0-q35.x86_64.xml
@@ -221,6 +221,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 ab55ec2452..9e920d1ccb 100644
--- a/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0-tcg.x86_64.xml
@@ -236,6 +236,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 e0af576d5c..776173e60e 100644
--- a/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0-virt.aarch64.xml
@@ -166,6 +166,12 @@
     </filesystem>
     <tpm supported='no'/>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 61839a1983..b6711fc3a4 100644
--- a/tests/domaincapsdata/qemu_4.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.aarch64.xml
@@ -164,6 +164,12 @@
     </filesystem>
     <tpm supported='no'/>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 1626d9b186..88790451b0 100644
--- a/tests/domaincapsdata/qemu_4.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.ppc64.xml
@@ -137,6 +137,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 ee07f4c274..fa416af038 100644
--- a/tests/domaincapsdata/qemu_4.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.s390x.xml
@@ -243,6 +243,12 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 a6eaf7962f..ed9de89dfa 100644
--- a/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_4.2.0.x86_64.xml
@@ -221,6 +221,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 232f1f0e12..af0335eb3a 100644
--- a/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0-q35.x86_64.xml
@@ -223,6 +223,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 ce2c08f205..fc09e9ff28 100644
--- a/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0-tcg.x86_64.xml
@@ -238,6 +238,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 9215371d0c..88bc77f50b 100644
--- a/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0-virt.aarch64.xml
@@ -178,6 +178,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 fcc77ad8db..5e030047d1 100644
--- a/tests/domaincapsdata/qemu_5.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0.aarch64.xml
@@ -176,6 +176,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 711ccc2cb0..0c5aaade40 100644
--- a/tests/domaincapsdata/qemu_5.0.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0.ppc64.xml
@@ -143,6 +143,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 f52613f584..5b2a0bc83d 100644
--- a/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.0.0.x86_64.xml
@@ -223,6 +223,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 542d32b018..fb9f69bb9a 100644
--- a/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.1.0-q35.x86_64.xml
@@ -224,6 +224,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 8bd5c6073c..ea31348ab1 100644
--- a/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.1.0-tcg.x86_64.xml
@@ -238,6 +238,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 ea4d1d28dd..5bbf4720dc 100644
--- a/tests/domaincapsdata/qemu_5.1.0.sparc.xml
+++ b/tests/domaincapsdata/qemu_5.1.0.sparc.xml
@@ -110,6 +110,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 5c48efc8c6..584dad5a89 100644
--- a/tests/domaincapsdata/qemu_5.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.1.0.x86_64.xml
@@ -224,6 +224,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 70c4f3cbd1..f1d20991e9 100644
--- a/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-q35.x86_64.xml
@@ -224,6 +224,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 636a84e55f..cec260f56d 100644
--- a/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-tcg.x86_64.xml
@@ -238,6 +238,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 900d10f720..be7262211c 100644
--- a/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0-virt.aarch64.xml
@@ -178,6 +178,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 fcc77ad8db..5e030047d1 100644
--- a/tests/domaincapsdata/qemu_5.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.aarch64.xml
@@ -176,6 +176,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 99c2767276..9367738157 100644
--- a/tests/domaincapsdata/qemu_5.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.ppc64.xml
@@ -143,6 +143,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 bdade9c5bb..adc197648f 100644
--- a/tests/domaincapsdata/qemu_5.2.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.s390x.xml
@@ -245,6 +245,12 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 db22085e31..a3707e6804 100644
--- a/tests/domaincapsdata/qemu_5.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_5.2.0.x86_64.xml
@@ -224,6 +224,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 395eb3b9eb..7edb84e9bc 100644
--- a/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-q35.x86_64.xml
@@ -226,6 +226,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 769a1147b6..cc0bfcac2d 100644
--- a/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-tcg.x86_64.xml
@@ -240,6 +240,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 2f56e36c28..db9b45d74e 100644
--- a/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0-virt.aarch64.xml
@@ -180,6 +180,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 4639a84c1d..1a65156544 100644
--- a/tests/domaincapsdata/qemu_6.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.aarch64.xml
@@ -178,6 +178,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 25abcac608..56d87f7a2f 100644
--- a/tests/domaincapsdata/qemu_6.0.0.s390x.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.s390x.xml
@@ -246,6 +246,12 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 2be8f3e33b..3afab2f4c2 100644
--- a/tests/domaincapsdata/qemu_6.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.0.0.x86_64.xml
@@ -226,6 +226,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 f23e758b1a..d0dbadd6d3 100644
--- a/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0-q35.x86_64.xml
@@ -227,6 +227,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 f78abdefc5..52071fc2c5 100644
--- a/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0-tcg.x86_64.xml
@@ -240,6 +240,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 9de18c682e..17c30b394d 100644
--- a/tests/domaincapsdata/qemu_6.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.1.0.x86_64.xml
@@ -227,6 +227,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 dff92d65aa..c185ae4510 100644
--- a/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-q35.x86_64.xml
@@ -227,6 +227,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 f027eb25a5..7bebc1f8b2 100644
--- a/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-tcg.x86_64.xml
@@ -241,6 +241,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 c572b0481c..3d79cd7486 100644
--- a/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0-virt.aarch64.xml
@@ -186,6 +186,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 eb521a0cfa..4ccffb3695 100644
--- a/tests/domaincapsdata/qemu_6.2.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.aarch64.xml
@@ -184,6 +184,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 7797b94cf2..ba7bc17a98 100644
--- a/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.ppc64.xml
@@ -142,6 +142,12 @@
       </enum>
     </tpm>
     <redirdev supported='no'/>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 aff2ee6662..ba40728489 100644
--- a/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_6.2.0.x86_64.xml
@@ -227,6 +227,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 e70b0990a7..94c6f3d712 100644
--- a/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-q35.x86_64.xml
@@ -228,6 +228,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 03c5411c4e..c6a02b6512 100644
--- a/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-tcg.x86_64.xml
@@ -242,6 +242,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 59f89afd9b..3addb1fc57 100644
--- a/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0-virt.aarch64.xml
@@ -185,6 +185,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 1e6bf544dc..9f07a10a90 100644
--- a/tests/domaincapsdata/qemu_7.0.0.aarch64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.aarch64.xml
@@ -183,6 +183,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 76da1f4f7d..ed6c74aac1 100644
--- a/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.ppc64.xml
@@ -147,6 +147,12 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 da23f5703a..5913f44937 100644
--- a/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.0.0.x86_64.xml
@@ -228,6 +228,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 05b36ee79e..2d76581915 100644
--- a/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0-q35.x86_64.xml
@@ -227,6 +227,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </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 0786cd8430..c0b59c0d44 100644
--- a/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0-tcg.x86_64.xml
@@ -240,6 +240,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
diff --git a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
index d430e54caa..a5c2d8e598 100644
--- a/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0.ppc64.xml
@@ -140,6 +140,12 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+      </enum>
+    </channel>
   </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 ae67a16947..a419005ee3 100644
--- a/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
+++ b/tests/domaincapsdata/qemu_7.1.0.x86_64.xml
@@ -227,6 +227,13 @@
         <value>usb</value>
       </enum>
     </redirdev>
+    <channel supported='yes'>
+      <enum name='type'>
+        <value>pty</value>
+        <value>unix</value>
+        <value>spicevmc</value>
+      </enum>
+    </channel>
   </devices>
   <features>
     <gic supported='no'/>
-- 
2.37.3



More information about the libvir-list mailing list