[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

[libvirt] [PATCH] Set a sensible default master start port for ehci companion controllers



From: "Daniel P. Berrange" <berrange redhat com>

The uhci1, uhci2, uhci3 companion controllers for ehci1 must
have a master start port set. Since this value is predictable
we should set it automatically if the app does not supply it
---
 src/conf/domain_conf.c                             |   22 ++++++++++++++++++
 .../qemuxml2argv-usb-ich9-ehci-addr.xml            |   24 +++++---------------
 2 files changed, 28 insertions(+), 18 deletions(-)

diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
index 54ac1db..f4775be 100644
--- a/src/conf/domain_conf.c
+++ b/src/conf/domain_conf.c
@@ -4066,6 +4066,28 @@ virDomainControllerDefParseXML(xmlNodePtr node,
         VIR_FREE(vectors);
         break;
     }
+    case VIR_DOMAIN_CONTROLLER_TYPE_USB: {
+        /* If the XML has a uhci1, uhci2, uhci3 controller and no
+         * master port was given, we should set a sensible one */
+        int masterPort = -1;
+        switch (def->model) {
+        case VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI1:
+            masterPort = 0;
+            break;
+        case VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI2:
+            masterPort = 2;
+            break;
+        case VIR_DOMAIN_CONTROLLER_MODEL_USB_ICH9_UHCI3:
+            masterPort = 4;
+            break;
+        }
+        if (masterPort != -1 &&
+            def->info.mastertype == VIR_DOMAIN_CONTROLLER_MASTER_NONE) {
+            def->info.mastertype = VIR_DOMAIN_CONTROLLER_MASTER_USB;
+            def->info.master.usb.startport = masterPort;
+        }
+        break;
+    }
 
     default:
         break;
diff --git a/tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-ehci-addr.xml b/tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-ehci-addr.xml
index 8eff1d7..ad85d63 100644
--- a/tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-ehci-addr.xml
+++ b/tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-ehci-addr.xml
@@ -19,19 +19,13 @@
     <controller type='usb' index='1' model='ich9-ehci1'>
     </controller>
 
-    <controller type='usb' index='0' model='ich9-uhci1'>
-      <master startport='0'/>
-    </controller>
-    <controller type='usb' index='1' model='ich9-uhci1'>
-      <master startport='0'/>
-    </controller>
+    <controller type='usb' index='0' model='ich9-uhci1'/>
+    <controller type='usb' index='1' model='ich9-uhci1'/>
     <controller type='usb' index='2' model='ich9-uhci1'>
       <master startport='0'/>
     </controller>
 
-    <controller type='usb' index='0' model='ich9-uhci3'>
-      <master startport='4'/>
-    </controller>
+    <controller type='usb' index='0' model='ich9-uhci3'/>
     <controller type='usb' index='1' model='ich9-uhci3'>
       <master startport='4'/>
     </controller>
@@ -39,15 +33,9 @@
       <master startport='4'/>
     </controller>
 
-    <controller type='usb' index='2' model='ich9-uhci2'>
-      <master startport='2'/>
-    </controller>
-    <controller type='usb' index='1' model='ich9-uhci2'>
-      <master startport='2'/>
-    </controller>
-    <controller type='usb' index='0' model='ich9-uhci2'>
-      <master startport='2'/>
-    </controller>
+    <controller type='usb' index='2' model='ich9-uhci2'/>
+    <controller type='usb' index='1' model='ich9-uhci2'/>
+    <controller type='usb' index='0' model='ich9-uhci2'/>
     <memballoon model='virtio'/>
   </devices>
 </domain>
-- 
1.7.10.1


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]