From: Shivaprasad G Bhat <sbhat(a)linux.vnet.ibm.com>
No functional change.
Signed-off-by: Shivaprasad G Bhat <sbhat(a)linux.vnet.ibm.com>
Signed-off-by: Daniel Henrique Barboza <danielhb413(a)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