On Fri, Mar 07, 2014 at 06:52:44PM +0800, Chunyan Liu wrote:
Signed-off-by: Chunyan Liu <cyliu(a)suse.com>
---
src/qemu/qemu_hostdev.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/qemu/qemu_hostdev.c b/src/qemu/qemu_hostdev.c
index 5fa6eb4..2dfe252 100644
--- a/src/qemu/qemu_hostdev.c
+++ b/src/qemu/qemu_hostdev.c
@@ -1254,10 +1254,8 @@ qemuPrepareHostDevices(virQEMUDriverPtr driver,
* are locked
*/
static void
-qemuReattachPciDevice(virPCIDevicePtr dev, virHostdevManagerPtr mgr)
+virHostdevReattachPciDevice(virPCIDevicePtr dev, virHostdevManagerPtr mgr)
{
- int retries = 100;
-
/* If the device is not managed and was attached to guest
* successfully, it must have been inactive.
*/
@@ -1267,10 +1265,14 @@ qemuReattachPciDevice(virPCIDevicePtr dev, virHostdevManagerPtr
mgr)
return;
}
- while (virPCIDeviceWaitForCleanup(dev, "kvm_assigned_device")
- && retries) {
- usleep(100*1000);
- retries--;
+ /* Wait for device cleanup if it is qemu/kvm */
+ if (STREQ(virPCIDeviceGetStubDriver(dev), "pci-stub")) {
+ int retries = 100;
+ while (virPCIDeviceWaitForCleanup(dev, "kvm_assigned_device")
+ && retries) {
+ usleep(100*1000);
+ retries--;
+ }
}
if (virPCIDeviceReattach(dev, mgr->activePciHostdevs,
Looks like this commit is 2 separate patches merged into one. I can
easily split this in two though.
@@ -1363,7 +1365,7 @@
virHostdevReAttachPCIDevices(virHostdevManagerPtr hostdev_mgr,
while (virPCIDeviceListCount(pcidevs) > 0) {
virPCIDevicePtr dev = virPCIDeviceListStealIndex(pcidevs, 0);
- qemuReattachPciDevice(dev, hostdev_mgr);
+ virHostdevReattachPciDevice(dev, hostdev_mgr);
}
virObjectUnref(pcidevs);
ACK when split in two.
Regards,
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|