]> xenbits.xensource.com Git - libvirt.git/commitdiff
Set a sensible default master start port for ehci companion controllers
authorDaniel P. Berrange <berrange@redhat.com>
Mon, 14 May 2012 12:22:58 +0000 (13:22 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Tue, 15 May 2012 16:07:34 +0000 (17:07 +0100)
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
tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-ehci-addr.xml

index e43d76ddb77ce0f8f3d91908f3193f52481830fc..79355e2f780df55edf020871b0cbc2e893f0c6b1 100644 (file)
@@ -4073,6 +4073,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;
index 8eff1d7e65d7dde14b767925438f5b3ee7372ddb..ad85d63b39b740619e86cc11d8f2b6c6ea2d9c3e 100644 (file)
     <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>
       <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>