[PATCH 09/31] qemu: Check for pci-ohci availability

Andrea Bolognani via Devel posted 31 patches 2 weeks, 5 days ago
[PATCH 09/31] qemu: Check for pci-ohci availability
Posted by Andrea Bolognani via Devel 2 weeks, 5 days ago
We assign the USB controller model without first checking
whether the corresponding QEMU device is available, and that
results in a late error instead of an early one.

Be consistent with how we do things in all other cases and
check the presence of the capability before attempting to set
the model.

Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 src/qemu/qemu_postparse.c                                      | 3 ++-
 ...ontroller-automatic-unavailable-realview.aarch64-latest.err | 2 +-
 ...ontroller-automatic-unavailable-realview.aarch64-latest.xml | 2 +-
 ...troller-automatic-unavailable-versatilepb.armv7l-latest.err | 2 +-
 ...troller-automatic-unavailable-versatilepb.armv7l-latest.xml | 2 +-
 5 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/qemu/qemu_postparse.c b/src/qemu/qemu_postparse.c
index 9c2427970d..5f59b79d56 100644
--- a/src/qemu/qemu_postparse.c
+++ b/src/qemu/qemu_postparse.c
@@ -1299,7 +1299,8 @@ qemuDomainDefAddDefaultDevices(virQEMUDriver *driver,
         if (STREQ(def->os.machine, "versatilepb") ||
             STRPREFIX(def->os.machine, "realview")) {
             addDefaultUSB = true;
-            usbModel = VIR_DOMAIN_CONTROLLER_MODEL_USB_PCI_OHCI;
+            if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_PCI_OHCI))
+                usbModel = VIR_DOMAIN_CONTROLLER_MODEL_USB_PCI_OHCI;
         }
 
         if (qemuDomainIsARMVirt(def))
diff --git a/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.aarch64-latest.err b/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.aarch64-latest.err
index 918b72dbe9..cac4e8e760 100644
--- a/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.aarch64-latest.err
+++ b/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.aarch64-latest.err
@@ -1 +1 @@
-unsupported configuration: USB controller model 'pci-ohci' not supported in this QEMU binary
+internal error: Unable to determine model for USB controller idx=0
diff --git a/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.aarch64-latest.xml b/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.aarch64-latest.xml
index 372d5bda6a..dfa8ef8dbe 100644
--- a/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.aarch64-latest.xml
+++ b/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-realview.aarch64-latest.xml
@@ -15,7 +15,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-aarch64</emulator>
-    <controller type='usb' index='0' model='pci-ohci'/>
+    <controller type='usb' index='0'/>
     <audio id='1' type='none'/>
     <memballoon model='none'/>
   </devices>
diff --git a/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.armv7l-latest.err b/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.armv7l-latest.err
index 918b72dbe9..cac4e8e760 100644
--- a/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.armv7l-latest.err
+++ b/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.armv7l-latest.err
@@ -1 +1 @@
-unsupported configuration: USB controller model 'pci-ohci' not supported in this QEMU binary
+internal error: Unable to determine model for USB controller idx=0
diff --git a/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.armv7l-latest.xml b/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.armv7l-latest.xml
index 482029e3b0..93bf8dcd0a 100644
--- a/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.armv7l-latest.xml
+++ b/tests/qemuxmlconfdata/usb-controller-automatic-unavailable-versatilepb.armv7l-latest.xml
@@ -17,7 +17,7 @@
   <on_crash>destroy</on_crash>
   <devices>
     <emulator>/usr/bin/qemu-system-armv7l</emulator>
-    <controller type='usb' index='0' model='pci-ohci'>
+    <controller type='usb' index='0'>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x0'/>
     </controller>
     <controller type='pci' index='0' model='pci-root'/>
-- 
2.50.1