[libvirt] PATCH: Don't reset / detach host PCI devices in test scripts !
Jim Meyering
jim at meyering.net
Tue Mar 3 09:01:18 UTC 2009
Daniel P. Berrange wrote:
> The PCI passthrough patches made it so that qemudBuildCommandLine() would
> actually try to detach your host devices & reset them. Most definitely not
> what you want when running this via a test case!
>
> This patch moves the host device management out into a separate method,
> so that qemudBuildCommandLine() doesn't do anything except safely build
> the command line.
Ah. This fixes the failure I just reported.
Looks good.
> + /* Now that all the PCI hostdevs have be dettached, we can safely
Obviously this is just "moved" code, but might as well fix the comment:
s/be/been/
> + * reset them */
> + for (i = 0 ; i < def->nhostdevs ; i++) {
> + virDomainHostdevDefPtr hostdev = def->hostdevs[i];
> + pciDevice *dev;
> +
> + if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS)
> + continue;
> + if (hostdev->source.subsys.type != VIR_DOMAIN_HOSTDEV_SUBSYS_TYPE_PCI)
> + continue;
> +
> + dev = pciGetDevice(conn,
> + hostdev->source.subsys.u.pci.domain,
> + hostdev->source.subsys.u.pci.bus,
> + hostdev->source.subsys.u.pci.slot,
> + hostdev->source.subsys.u.pci.function);
> + if (!dev)
> + goto error;
> +
> + if (pciResetDevice(conn, dev) < 0) {
> + pciFreeDevice(conn, dev);
> + goto error;
> + }
> +
> + pciFreeDevice(conn, dev);
You can remove a duplicate free and save two lines
by replacing the above with this:
int err = pciResetDevice(conn, dev);
pciFreeDevice(conn, dev);
if (err < 0)
goto error;
> + }
> +
> + return 0;
> +
> +error:
> + return -1;
> +}
More information about the libvir-list
mailing list