From: Jiri Denemark Date: Fri, 13 Aug 2010 14:16:19 +0000 (+0200) Subject: qemu: Re-reserve all PCI addresses on libvirtd restart X-Git-Url: http://xenbits.xensource.com/gitweb?a=commitdiff_plain;h=4f86613ba1848ccd457ce23dde746a1a448541ae;p=libvirt.git qemu: Re-reserve all PCI addresses on libvirtd restart When reconnecting to existing VMs, we re-reserved only those PCI addresses which were explicitly mentioned in domain XML. Since some addresses are always reserved (e.g., 0:0:0 and 0:0:1), we need to handle those too. Also all this should only be done if device flag is supported by qemu. --- diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index cb420986ba..45e84fc804 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1464,11 +1464,13 @@ qemuReconnectDomain(void *payload, const char *name ATTRIBUTE_UNUSED, void *opaq if (qemudExtractVersionInfo(obj->def->emulator, NULL, &qemuCmdFlags) >= 0 && - (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE)) + (qemuCmdFlags & QEMUD_CMD_FLAG_DEVICE)) { priv->persistentAddrs = 1; - if (!(priv->pciaddrs = qemuDomainPCIAddressSetCreate(obj->def))) - goto error; + if (!(priv->pciaddrs = qemuDomainPCIAddressSetCreate(obj->def)) || + qemuAssignDevicePCISlots(obj->def, priv->pciaddrs) < 0) + goto error; + } if (driver->securityDriver && driver->securityDriver->domainReserveSecurityLabel &&