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

Oved Ourfalli ovedo at redhat.com
Tue May 15 05:41:32 UTC 2012


Hey,

I built libvirt RPM with this fix (and the previous addresses fix), and I get the following error when running a VM with USB support:
internal error Process exited while reading console log output: qemu-kvm: -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x4.0x7: Duplicate ID 'usb' for device

This error happened also without these fixes (I thought these patches will address that, so I waited, but looks like the problem might not be related to it).

Did you encounter such a problem when you tested it?

The relevant devices I pass are:
      <controller index="0" model="ich9-ehci1" type="usb"/>
      <controller index="0" model="ich9-uhci1" type="usb">
              <master startport="0"/>
      </controller>
      <controller index="0" model="ich9-uhci2" type="usb">
              <master startport="2"/>
      </controller>
      <controller index="0" model="ich9-uhci3" type="usb">
              <master startport="4"/>
      </controller>
      <redirdev bus="usb" type="spicevmc"/>
      <redirdev bus="usb" type="spicevmc"/>

Thank you,
Oved
----- Original Message -----
> From: "Daniel P. Berrange" <berrange at redhat.com>
> To: libvir-list at redhat.com
> Cc: "Oved Ourfalli" <ovedo at redhat.com>, "Hans de Goede" <hdegoede at redhat.com>, "Daniel P. Berrange"
> <berrange at redhat.com>
> Sent: Monday, May 14, 2012 3:24:40 PM
> Subject: [PATCH] Set a sensible default master start port for ehci companion controllers
> 
> From: "Daniel P. Berrange" <berrange at 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
> 
> 




More information about the libvir-list mailing list