[PATCH v2 31/38] qemu: Clean up qemuDomainDefaultUSBControllerModelAutoAdded()

Andrea Bolognani via Devel posted 38 patches 1 week, 2 days ago
[PATCH v2 31/38] qemu: Clean up qemuDomainDefaultUSBControllerModelAutoAdded()
Posted by Andrea Bolognani via Devel 1 week, 2 days ago
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
---
 src/qemu/qemu_domain.c | 29 ++++++++++++++---------------
 1 file changed, 14 insertions(+), 15 deletions(-)

diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index 74c393c2df..370831fa48 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -4421,22 +4421,21 @@ virDomainControllerModelUSB
 qemuDomainDefaultUSBControllerModelAutoAdded(const virDomainDef *def,
                                              virQEMUCaps *qemuCaps)
 {
-    virDomainControllerModelUSB model = VIR_DOMAIN_CONTROLLER_MODEL_USB_DEFAULT;
-
     if (ARCH_IS_X86(def->os.arch)) {
         if (qemuDomainIsQ35(def)) {
-            /* Prefer adding a USB3 controller if supported, fall back
-             * to USB2 if there is no USB3 available, and if that's
-             * unavailable don't add anything.
-             */
+            /* Prefer qemu-xhci or nec-xhci (USB3) */
             if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_DEVICE_QEMU_XHCI))
-                model = VIR_DOMAIN_CONTROLLER_MODEL_USB_QEMU_XHCI;
-            else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NEC_USB_XHCI))
-                model = VIR_DOMAIN_CONTROLLER_MODEL_USB_NEC_XHCI;
-            else if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_ICH9_USB_EHCI1))
-                model = VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_EHCI1;
-            else
-                model = VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE;
+                return VIR_DOMAIN_CONTROLLER_MODEL_USB_QEMU_XHCI;
+            if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_NEC_USB_XHCI))
+                return VIR_DOMAIN_CONTROLLER_MODEL_USB_NEC_XHCI;
+
+            /* Fall back to ich9-ehci1 (USB2) */
+            if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_ICH9_USB_EHCI1))
+                return VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_EHCI1;
+
+            /* If neither USB3 nor USB2 are available, do not add
+             * the controller at all */
+            return VIR_DOMAIN_CONTROLLER_MODEL_USB_NONE;
         }
     }
 
@@ -4444,10 +4443,10 @@ qemuDomainDefaultUSBControllerModelAutoAdded(const virDomainDef *def,
         if (STREQ(def->os.machine, "versatilepb") ||
             STRPREFIX(def->os.machine, "realview-eb"))
             if (virQEMUCapsGet(qemuCaps, QEMU_CAPS_PCI_OHCI))
-                model = VIR_DOMAIN_CONTROLLER_MODEL_USB_PCI_OHCI;
+                return VIR_DOMAIN_CONTROLLER_MODEL_USB_PCI_OHCI;
     }
 
-    return model;
+    return VIR_DOMAIN_CONTROLLER_MODEL_USB_DEFAULT;
 }
 
 
-- 
2.51.0
Re: [PATCH v2 31/38] qemu: Clean up qemuDomainDefaultUSBControllerModelAutoAdded()
Posted by Peter Krempa via Devel 1 day, 12 hours ago
On Thu, Sep 25, 2025 at 20:07:17 +0200, Andrea Bolognani via Devel wrote:

Return the selected models right away.

> Signed-off-by: Andrea Bolognani <abologna@redhat.com>
> ---
>  src/qemu/qemu_domain.c | 29 ++++++++++++++---------------
>  1 file changed, 14 insertions(+), 15 deletions(-)

Reviewed-by: Peter Krempa <pkrempa@redhat.com>