]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
qemu: Clean up qemuDomainDefaultUSBControllerModelAutoAdded()
authorAndrea Bolognani <abologna@redhat.com>
Thu, 25 Sep 2025 13:29:44 +0000 (15:29 +0200)
committerAndrea Bolognani <abologna@redhat.com>
Mon, 6 Oct 2025 09:16:20 +0000 (11:16 +0200)
Signed-off-by: Andrea Bolognani <abologna@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
Reviewed-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/qemu/qemu_domain.c

index 74c393c2df04019513efa5ed9fed114c7388e872..370831fa486c54c9c4368d6f4ead938140ff6f8c 100644 (file)
@@ -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;
 }