On Tue, 2017-01-10 at 03:23 -0500, Laine Stump wrote: > If there are multiple devices assigned to the different functions of a > single PCI slot, they will not work properly if the device at function > 0 doesn't have its "multi" attribute turned on, so it makes sense for > libvirt to turn it on during PCI address assignment. Just in case a > future change in the configuration eliminates the devices on all non-0 > functions, and in case some guest OS would be confused by having the > multi flag of function 0 modified to "no" at the next boot of the > guest (it may seem like an inconsequential guest ABI change, but it > *is* a guest ABI change). > > We are set multi during PCI address assignment (which happens in the > domain post-parse callback) rather than at qemu runtime so that the > setting will be stored in config and persist even in the case that the > devices in the non-0 functions of the slot are later removed from the > config - this is done to prevent a "silent" guest ABI change (although > it can only happen after shutting down and restarting the guest, and > although it may seem like an inconsequential guest ABI change, it *is* > a guest ABI change to turn off the multi bit). The commit messages seems to contain editing artifacts that I trust you'll get rid of before pushing. [...] > + /* set multi attribute for devices at function 0 of > + * any slot that has multiple functions in use > + */ > + virDomainPCIAddressSetAllMulti(def, addrs); This will of course have to be changed now that virDomainPCIAddressSetAllMulti() takes a single argument. ACK -- Andrea Bolognani / Red Hat / Virtualization -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list