[libvirt] [PATCH v2 4/4] qemu: assign vfio devices to PCIe addresses when appropriate
Andrea Bolognani
abologna at redhat.com
Thu Nov 24 15:43:17 UTC 2016
On Mon, 2016-11-21 at 00:01 -0500, Laine Stump wrote:
> Although nearly all host devices that are assigned to guests using
> vfio ("<hostdev>" devices in libvirt) are physically PCI Express
s/vfio/VFIO/
Same for the subject.
[...]
> @@ -558,8 +558,88 @@ qemuDomainDeviceCalculatePCIConnectFlags(virDomainDeviceDefPtr dev,
> return 0;
> }
>
> - case VIR_DOMAIN_DEVICE_HOSTDEV:
> - return pciFlags;
> + case VIR_DOMAIN_DEVICE_HOSTDEV: {
> + virDomainHostdevDefPtr hostdev = dev->data.hostdev;
> +
> + if (hostdev->mode == VIR_DOMAIN_HOSTDEV_MODE_SUBSYS &&
> + hostdev->source.subsys.type == VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI) {
How about inverting this condition and returning 0 immediately
unless if the wrong mode or type is used? You could get rid
of one indentation level that way, and the function already
has a gazillion return statements anyway.
[...]
> + if (virDeviceInfoPCIAddressPresent(hostdev->info)) {
> + /* A guest-side address has already been assigned, so
> + * we can avoid reading the PCI config, and just use
> + * pcieFlags, since the pciConnectFlags checking is
> + * more relaxed when an address is already assigned
> + * than it is when we're looking for a new address (so
> + * validation will pass regardless of whether we set
> + * the flags to PCI or PCIE).
s/PCIE/PCIe/
[...]
> + /* If we are running with privileges, we can examine the
> + * PCI config contents with virPCIDeviceIsPCIExpress() for
> + * a definitive answer.
> + */
> + isExpress = virPCIDeviceIsPCIExpress(pciDev);
> + virPCIDeviceFree(pciDev);
> +
> + if (isExpress)
> + return pcieFlags;
> +
> + return pciFlags;
> + }
Empty line here, please.
> + return 0;
> + }
>
> case VIR_DOMAIN_DEVICE_MEMBALLOON:
> switch ((virDomainMemballoonModel) dev->data.memballoon->model) {
ACK (with the nits fixed) regardless of whether you decide to
go with my suggestion of reducing the indentation level.
--
Andrea Bolognani / Red Hat / Virtualization
More information about the libvir-list
mailing list