On 11/24/2016 10:43 AM, Andrea Bolognani wrote:
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.
I've been trying to return early only for specific cases, and leave the
"catchall" for each case at the end of the case. But since this function
is returning the *PCI* connect flags, I guess "not a PCI device" is a
pretty specific case :-) (in other words "okay, I'll invert the
condition, return early with a 0, and reduce the indent level (which I
also like)).