[libvirt] [PATCHv2 2/2] qemu: make PCI multifunction support more manual

Eric Blake eblake at redhat.com
Fri Sep 30 20:25:40 UTC 2011


On 09/30/2011 12:02 PM, Laine Stump wrote:
> (V2: address Daniel Veillard's two review points (don't allow
> "multifunction='default'", and add "multifunction=off" to the qemu
> commandline when that's what the XML says), and modify the checks for
> duplicate PCI address usage attempts to account for multifunction=off
> on a device's function 0, per IRC discussion with Dan Berrange (see
> new qemuCollectPCIAddress()). As a side effect, attempts to re-use the
> same PCI address are now logged rather than silently generating an
> error.)

Yep, I can see those enhancements over v1.

>
> A side effect of this patch is that attempts to use the same PCI
> address for two different devices will now log an error (previously
> this would cause the domain define operation to fail, but there would
> be no log message generated). Because the function doing this log was
> almost completely rewritten, I didn't think it worthwhile to make a
> separate patch for that fix (the entire patch would immediately be
> obsoleted).

Agree - no easy way to split it.

> @@ -1118,10 +1118,14 @@
>           The<code>type</code>  attribute is mandatory, and is typically
>           "pci" or "drive".  For a "pci" controller, additional
>           attributes for<code>bus</code>,<code>slot</code>,
> -        and<code>function</code>  must be present, as well as an
> -        optional<code>domain</code>.  For a "drive" controller,
> -        additional attributes<code>controller</code>,<code>bus</code>,
> +        and<code>function</code>  must be present, as well as
> +        optional<code>domain</code>
> +        and<code>multifunction</code><span class="since">since
> +        0.9.7, requires QEMU 0.13</span>  (defaults to 'off').  For a

This wording makes it sound like both domain and multifunction were 
first introduced in 0.9.7, rather than the intended fact that 
'multifunction' is the only newcomer attribute.  Maybe reword along the 
lines of:

...as well as optional 'domain' and 'multifunction'.  Multifunction 
defaults to 'off', any other value requires QEMU 0.13 and <span 
class="since">libvirt 0.9.7</span>.

> +++ b/tests/qemuxml2argvdata/qemuxml2argv-usb-ich9-ehci-addr.args
> @@ -1 +1 @@
> -LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -device ich9-usb-ehci1,id=usb,bus=pci.0,multifunction=on,addr=0x4.0x7 -device virtio-balloon-pci,id=balloon0,bus=pci.0,multifunction=on,addr=0x3.0x0
> +LC_ALL=C PATH=/bin HOME=/home/test USER=test LOGNAME=test /usr/bin/qemu -S -M pc -m 214 -smp 1 -nographic -nodefconfig -nodefaults -chardev socket,id=charmonitor,path=/tmp/test-monitor,server,nowait -mon chardev=charmonitor,id=monitor,mode=readline -no-acpi -boot c -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x4.0x7 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3

These are some rather long lines.  While you are touching them, it would 
be worth splitting them with \-newline pairs to fit in more reasonable 
limits.

ACK with those nits fixed.

-- 
Eric Blake   eblake at redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org




More information about the libvir-list mailing list