[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