On 11/29/2011 03:09 AM, Osier Yang wrote: > This patch fixes two problems: > 1) The device will be reattached to host even if it's not > managed, as there is a "pciDeviceSetManaged". > 2) The device won't be reattached to host with original > driver properly. As it doesn't honor the device original > properties which are maintained by driver->activePciHostdevs. > --- > src/qemu/qemu_hotplug.c | 17 +++++++++-------- > 1 files changed, 9 insertions(+), 8 deletions(-) > > diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c > index 96c0070..19e4a41 100644 > --- a/src/qemu/qemu_hotplug.c > +++ b/src/qemu/qemu_hotplug.c > @@ -1960,6 +1960,7 @@ int qemuDomainDetachHostPciDevice(struct qemud_driver *driver, > qemuDomainObjPrivatePtr priv = vm->privateData; > int i, ret; > pciDevice *pci; > + pciDevice *activePci; > > for (i = 0 ; i < vm->def->nhostdevs ; i++) { > if (vm->def->hostdevs[i]->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS || > @@ -2019,16 +2020,16 @@ int qemuDomainDetachHostPciDevice(struct qemud_driver *driver, > detach->source.subsys.u.pci.bus, > detach->source.subsys.u.pci.slot, > detach->source.subsys.u.pci.function); > - if (!pci) > - ret = -1; > - else { Yay - fixing up a HACKING formatting convention violation in the process. > - pciDeviceSetManaged(pci, detach->managed); > - pciDeviceListDel(driver->activePciHostdevs, pci); > - if (pciResetDevice(pci, driver->activePciHostdevs, NULL) < 0) > + if (pci) { > + activePci = pciDeviceListSteal(driver->activePciHostdevs, pci); > + if (pciResetDevice(activePci, driver->activePciHostdevs, NULL)) > + qemuReattachPciDevice(activePci, driver); > + else > ret = -1; > - pciDeviceReAttachInit(pci); > - qemuReattachPciDevice(pci, driver); > pciFreeDevice(pci); > + pciFreeDevice(activePci); > + } else { > + ret = -1; > } ACK, and sorry for the delayed review response. -- Eric Blake eblake@xxxxxxxxxx +1-919-301-3266 Libvirt virtualization library http://libvirt.org
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list