[libvirt] [RFC 06/12] Add USB companion controllers support

Daniel P. Berrange berrange at redhat.com
Tue Aug 23 15:48:37 UTC 2011


On Sun, Aug 21, 2011 at 10:01:17PM +0300, Marc-André Lureau wrote:
> Companion controllers take an extra 'master' attribute to associate
> them.
> ---
>  docs/formatdomain.html.in                          |   20 +++++++++
>  docs/schemas/domain.rng                            |   15 +++++++
>  src/conf/domain_conf.c                             |   44 ++++++++++++++++++++
>  src/conf/domain_conf.h                             |   18 ++++++++
>  src/qemu/qemu_command.c                            |    7 +++
>  .../qemuxml2argv-usb-ich9-companion.args           |    6 +++
>  .../qemuxml2argv-usb-ich9-companion.xml            |   30 +++++++++++++
>  tests/qemuxml2argvtest.c                           |    5 ++
>  8 files changed, 145 insertions(+), 0 deletions(-)
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-companion.args
>  create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-companion.xml
> 
> diff --git a/docs/formatdomain.html.in b/docs/formatdomain.html.in
> index 0a383f6..5c232fa 100644
> --- a/docs/formatdomain.html.in
> +++ b/docs/formatdomain.html.in
> @@ -1243,6 +1243,26 @@
>        sub-element.
>      </p>
>  
> +    <p>
> +      USB companion controllers have an optional
> +      sub-element <code><master></code> to specify the exact
> +      relationship of the companion to its master controller.
> +    </p>
> +
> +<pre>
> +  ...
> +  <devices>
> +    <controller type='usb' index='0' model='ich9-ehci1'>
> +      <address type='pci' domain='0' bus='0' slot='4' function='7'/>
> +    </controller>
> +    <controller type='usb' index='1' model='ich9-uhci1'>
> +      <master bus='0' startport='0'/>
> +      <address type='pci' domain='0' bus='0' slot='4' function='0'/>
> +    </controller>


The 'index' attribute on controllers is used to link up to the
PCI/USB/Drive address on individual devices.

This example suggests that each companion controller is a new
bus for devices to link upto, but they don't actually work
this way. All devices will always link directly to the echi
controller, regardless of any companions. So we should not
be incrementing the 'index' for the companions.

Also, although I suggested it IIRC, we should not in fact
have a 'bus' attribute on the <master> element, since it
is already implied by the 'index' attribute on the <controller>
All we need todo is have

  <master startport='0'/>

to show that its a slave companion, not a new bus.

Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list