
* Laine Stump (laine@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