[libvirt] [PATCH 2/2] qemu: use virDomainPCIAddressSetAllMulti() to set multi when needed

Andrea Bolognani abologna at redhat.com
Tue Jan 10 17:59:16 UTC 2017


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




More information about the libvir-list mailing list