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 | 24 ++++++++++--------------
 1 file changed, 10 insertions(+), 14 deletions(-)

diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
index d88a0922d4..6991d7988c 100644
--- a/src/qemu/qemu_hotplug.c
+++ b/src/qemu/qemu_hotplug.c
@@ -1605,12 +1605,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;
@@ -1643,14 +1640,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 */
-        qemuDomainFillDeviceIsolationGroup(vm->def, &dev);
-
-    if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0)
-        goto error;
-    releaseaddr = true;
-
     if (!virDomainObjIsActive(vm)) {
         virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
                        _("guest unexpectedly quit during hotplug"));
@@ -1692,9 +1681,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;
 }
 
@@ -2934,6 +2920,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,
@@ -2948,7 +2936,15 @@ qemuDomainAttachHostDevice(virQEMUDriverPtr driver,
                                                  hostdev, priv->qemuCaps) < 0)
             return -1;
 
+        if (qemuDomainIsPSeries(vm->def))
+            /* Isolation groups are only relevant for pSeries guests */
+            qemuDomainFillDeviceIsolationGroup(vm->def, &dev);
+
+        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.26.2

Reply via email to