]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu_capabilities: Do not report USB as subsystem type if it is not available
authorThomas Huth <thuth@redhat.com>
Mon, 13 Jan 2020 08:04:57 +0000 (09:04 +0100)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 13 Jan 2020 12:53:23 +0000 (13:53 +0100)
libvirt currently always reports that USB is available as a bus subsystem
type when running "virsh domcapabilities". However, this is not always
true, for example the qemu-system-s390x binary normally never has support
for USB. Thus we should only report that USB is available if there is
also a USB host controller available where we can attach USB devices.

Reported-by: Sebastian Mitterle <smitterl@redhat.com>
Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1759849
Signed-off-by: Thomas Huth <thuth@redhat.com>
Signed-off-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/qemu/qemu_capabilities.c
tests/domaincapsdata/qemu_2.10.0.s390x.xml
tests/domaincapsdata/qemu_2.11.0.s390x.xml
tests/domaincapsdata/qemu_2.12.0.s390x.xml
tests/domaincapsdata/qemu_2.7.0.s390x.xml
tests/domaincapsdata/qemu_2.8.0.s390x.xml
tests/domaincapsdata/qemu_2.9.0.s390x.xml
tests/domaincapsdata/qemu_3.0.0.s390x.xml
tests/domaincapsdata/qemu_4.0.0.s390x.xml
tests/domaincapsdata/qemu_4.2.0.s390x.xml

index da0c7a257fd8de08485ffb1d97cbfc83bc93efe3..84c62a4e280704d8bd967e4410ea46bbde62a4ec 100644 (file)
@@ -5674,10 +5674,21 @@ virQEMUCapsFillDomainDeviceHostdevCaps(virQEMUCapsPtr qemuCaps,
                              VIR_DOMAIN_STARTUP_POLICY_OPTIONAL);
 
     VIR_DOMAIN_CAPS_ENUM_SET(hostdev->subsysType,
-                             VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB,
                              VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI,
                              VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_SCSI);
 
+    if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_PIIX3_USB_UHCI) ||
+        virQEMUCapsGet(qemuCaps, QEMU_CAPS_PIIX4_USB_UHCI) ||
+        virQEMUCapsGet(qemuCaps, QEMU_CAPS_USB_EHCI) ||
+        virQEMUCapsGet(qemuCaps, QEMU_CAPS_ICH9_USB_EHCI1) ||
+        virQEMUCapsGet(qemuCaps, QEMU_CAPS_VT82C686B_USB_UHCI) ||
+        virQEMUCapsGet(qemuCaps, QEMU_CAPS_PCI_OHCI) ||
+        virQEMUCapsGet(qemuCaps, QEMU_CAPS_NEC_USB_XHCI) ||
+        virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_QEMU_XHCI)) {
+        VIR_DOMAIN_CAPS_ENUM_SET(hostdev->subsysType,
+                                 VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_USB);
+    }
+
     /* No virDomainHostdevCapsType for QEMU */
     virDomainCapsEnumClear(&hostdev->capsType);
 
index bf3f13887f8fcf52b607f313e4e0d6c666be5719..b41ca5158cf4a231f328109115f17249c23ae7c4 100644 (file)
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>
index 9b3b18d3207b3a872113eb4eb234cc4169e19a91..ad4e6b0500115e2f5ec3bd9cb727c1dee68f283b 100644 (file)
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>
index af7a04fb010f69f42ffa3a6959fc06553d07a697..9736d6a42db1d8f555d466364d325a10f82696c1 100644 (file)
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>
index 258000dbaf53375a58e5d7333722cebcb3155489..b19a4c9fedefc9a88ebdab9ac8a8733cda675ba0 100644 (file)
@@ -71,7 +71,6 @@
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>
index cc858f538cbc9b26d69a43c33e2e20d352eff1c5..30d2f7ff1f5efb3b9eeac3d5299ecac5b4ba0274 100644 (file)
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>
index fe2c023956a25e8b69c42db11b6560190e8a37be..2476e951817cec622332bd550748fc2ce8cfa3a1 100644 (file)
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>
index 68bcafd62f705381aa9a71fd168d9d9a4ec4df6b..a297bf9ef1defb36d7c92a33f75aa46c7a217b14 100644 (file)
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>
index 4298b148fd146383e04c300229749ad34ad80700..21ddd27cb93e6676f6e2e2d6ed4c2d748c31d780 100644 (file)
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>
index c6d92542c33e1cffd828019aff38f05ade9db0b3..101d9d028bee826935e6a05ed052120ffb9f39ab 100644 (file)
         <value>optional</value>
       </enum>
       <enum name='subsysType'>
-        <value>usb</value>
         <value>pci</value>
         <value>scsi</value>
       </enum>