From: Osier Yang Date: Mon, 17 Oct 2011 10:19:58 +0000 (+0800) Subject: qemu: Do not wait if the PCI device is not managed when reattaching X-Git-Tag: v0.9.7-rc1~84 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7fb50e300c8c37643bc6d035279d9d538be4adcc;p=thirdparty%2Flibvirt.git qemu: Do not wait if the PCI device is not managed when reattaching Waiting for qemu-kvm cleaning up the PCI bar(s) mapping with long time while the device is not managed is just waste of time. --- diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c index c65f6f5417..1fb373e220 100644 --- a/src/qemu/qemu_hostdev.c +++ b/src/qemu/qemu_hostdev.c @@ -322,19 +322,20 @@ void qemuReattachPciDevice(pciDevice *dev, struct qemud_driver *driver) { int retries = 100; + if (!pciDeviceGetManaged(dev)) + return; + while (pciWaitForDeviceCleanup(dev, "kvm_assigned_device") && retries) { usleep(100*1000); retries--; } - if (pciDeviceGetManaged(dev)) { - if (pciReAttachDevice(dev, driver->activePciHostdevs) < 0) { - virErrorPtr err = virGetLastError(); - VIR_ERROR(_("Failed to re-attach PCI device: %s"), - err ? err->message : _("unknown error")); - virResetError(err); - } + if (pciReAttachDevice(dev, driver->activePciHostdevs) < 0) { + virErrorPtr err = virGetLastError(); + VIR_ERROR(_("Failed to re-attach PCI device: %s"), + err ? err->message : _("unknown error")); + virResetError(err); } }