* Laine Stump (laine(a)laine.org) wrote:
On 09/29/2011 10:30 AM, Laine Stump wrote:
>On 09/27/2011 05:13 AM, Daniel P. Berrange wrote:
>>When we originally enabled multifunction for all PCI devices, we did so
>>in the belief that this was effectively a no-op for guest OSes. ie it
>>should not have changed guest OS behaviour at all, unless
>>multiple devices
>>were actually inserted in the slot.
>>
>>Evidentally this turns out to be incorrect. In other words we introduced
>>a guest ABI change. This is very bad, because our stated goal is to have
>>a stable guest ABI across libvirt& QEMU releases.
>>
>>Thus IMHO we need to disable *all* setting of the 'multifunction=on'
>>parameter for all guests by default, to unbreak the ABI compatibility.
Yes, I think that's correct. It should only be on for multifunction
devices.
>>Then we should introduce a new parameter
'multifunction='on' in the
>><address type=pci> element to allow it to be optionally enabled per
>>device.
>
>
>A couple of questions:
>
>1) Is it possible/useful to have function > 0 without
>multifunction=on in the qemu commandline?
qemu should blcok function > 0 when function 0 does not have
multifunction=on.
>2) If the answer to (1) is "No", if the XML has
function > 0 but
>no multifunction=on, should we implicitly add multifunction=on, or
>should we log an error?
You have to have a function 0 _and_ and function > 0 to be
multifunction. YOu have to specify multifucntion=on in function 0 (at a
minimum, spec is unclear whether it's required or implied for > 0).
Also:
3) if you explicitly/(implicitly?) set multifunction on for one
function of a slot, does qemu automatically do so for other
functions on the slot (ie, if you have a device that uses slot 1
function 1 (and turns on multifunction), then will slot 1 function 0
automatically have multifunction turned on too?)
It will not automagically set multifunction=on on func 0.
It will generate an error.
thanks,
-chris