From: Shivaprasad G Bhat <sb...@linux.vnet.ibm.com> No functional change.
Signed-off-by: Shivaprasad G Bhat <sb...@linux.vnet.ibm.com> Signed-off-by: Daniel Henrique Barboza <danielhb...@gmail.com> --- src/qemu/qemu_hotplug.c | 28 ++++++++++++---------------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 688171c7b2..18daa7aeac 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -1588,12 +1588,9 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, virDomainHostdevDefPtr hostdev) { qemuDomainObjPrivatePtr priv = vm->privateData; - virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_HOSTDEV, - { .hostdev = hostdev } }; virDomainDeviceInfoPtr info = hostdev->info; int ret; g_autofree char *devstr = NULL; - bool releaseaddr = false; bool teardowncgroup = false; bool teardownlabel = false; bool teardowndevice = false; @@ -1626,16 +1623,6 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, if (qemuAssignDeviceHostdevAlias(vm->def, &info->alias, -1) < 0) goto error; - if (qemuDomainIsPSeries(vm->def)) { - /* Isolation groups are only relevant for pSeries guests */ - if (qemuDomainFillDeviceIsolationGroup(vm->def, &dev) < 0) - goto error; - } - - if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) - goto error; - releaseaddr = true; - if (!virDomainObjIsActive(vm)) { virReportError(VIR_ERR_INTERNAL_ERROR, "%s", _("guest unexpectedly quit during hotplug")); @@ -1677,9 +1664,6 @@ qemuDomainAttachHostPCIDevice(virQEMUDriverPtr driver, if (teardownmemlock && qemuDomainAdjustMaxMemLock(vm, false) < 0) VIR_WARN("Unable to reset maximum locked memory on hotplug fail"); - if (releaseaddr) - qemuDomainReleaseDeviceAddress(vm, info); - return -1; } @@ -2910,6 +2894,8 @@ qemuDomainAttachHostDevice(virQEMUDriverPtr driver, virDomainHostdevDefPtr hostdev) { qemuDomainObjPrivatePtr priv = vm->privateData; + virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_HOSTDEV, + { .hostdev = hostdev } }; if (hostdev->mode != VIR_DOMAIN_HOSTDEV_MODE_SUBSYS) { virReportError(VIR_ERR_CONFIG_UNSUPPORTED, @@ -2924,7 +2910,17 @@ qemuDomainAttachHostDevice(virQEMUDriverPtr driver, hostdev, priv->qemuCaps) < 0) return -1; + if (qemuDomainIsPSeries(vm->def)) { + /* Isolation groups are only relevant for pSeries guests */ + if (qemuDomainFillDeviceIsolationGroup(vm->def, &dev) < 0) + return -1; + } + + if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) + return -1; + if (qemuDomainAttachHostPCIDevice(driver, vm, hostdev) < 0) { + qemuDomainReleaseDeviceAddress(vm, hostdev->info); qemuHostdevReAttachPCIDevices(driver, vm->def->name, &hostdev, 1); return -1; } -- 2.24.1