There are two more cases where we set an S390/CCW/PCI address type based on the machine type.
Reuse qemuDomainEnsureVirtioAddress to reduce repetition. --- src/qemu/qemu_hotplug.c | 56 ++++--------------------------------------------- 1 file changed, 4 insertions(+), 52 deletions(-) diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c index 177c8a01d..c65e7e500 100644 --- a/src/qemu/qemu_hotplug.c +++ b/src/qemu/qemu_hotplug.c @@ -498,7 +498,6 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, qemuDomainObjPrivatePtr priv = vm->privateData; virDomainDeviceDef dev = { VIR_DOMAIN_DEVICE_CONTROLLER, { .controller = controller } }; - virDomainCCWAddressSetPtr ccwaddrs = NULL; bool releaseaddr = false; if (controller->type != VIR_DOMAIN_CONTROLLER_TYPE_SCSI) { @@ -523,30 +522,9 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, return -1; } - if (controller->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { - if (qemuDomainIsS390CCW(vm->def) && - virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_CCW)) - controller->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW; - else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) - controller->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390; - } else { - if (!qemuCheckCCWS390AddressSupport(vm->def, controller->info, - priv->qemuCaps, "controller")) - goto cleanup; - } + if (qemuDomainEnsureVirtioAddress(&releaseaddr, vm, &dev, "controller") < 0) + return -1; - if (controller->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE || - controller->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { - if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) - goto cleanup; - } else if (controller->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) { - if (!(ccwaddrs = qemuDomainCCWAddrSetCreateFromDomain(vm->def))) - goto cleanup; - if (virDomainCCWAddressAssign(&controller->info, ccwaddrs, - !controller->info.addr.ccw.assigned) < 0) - goto cleanup; - } - releaseaddr = true; if (qemuAssignDeviceControllerAlias(vm->def, priv->qemuCaps, controller) < 0) goto cleanup; @@ -575,7 +553,6 @@ int qemuDomainAttachControllerDevice(virQEMUDriverPtr driver, qemuDomainReleaseDeviceAddress(vm, &controller->info, NULL); VIR_FREE(devstr); - virDomainCCWAddressSetFree(ccwaddrs); return ret; } @@ -2115,7 +2092,6 @@ qemuDomainAttachRNGDevice(virConnectPtr conn, bool chardevAdded = false; bool objAdded = false; virJSONValuePtr props = NULL; - virDomainCCWAddressSetPtr ccwaddrs = NULL; const char *type; int ret = -1; int rv; @@ -2127,31 +2103,8 @@ qemuDomainAttachRNGDevice(virConnectPtr conn, if (VIR_REALLOC_N(vm->def->rngs, vm->def->nrngs + 1) < 0) goto cleanup; - if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE) { - if (qemuDomainIsS390CCW(vm->def) && - virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_CCW)) { - rng->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW; - } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) { - rng->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_VIRTIO_S390; - } - } else { - if (!qemuCheckCCWS390AddressSupport(vm->def, rng->info, priv->qemuCaps, - "rng")) - goto cleanup; - } - - if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_NONE || - rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI) { - if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) - goto cleanup; - } else if (rng->info.type == VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW) { - if (!(ccwaddrs = qemuDomainCCWAddrSetCreateFromDomain(vm->def))) - goto cleanup; - if (virDomainCCWAddressAssign(&rng->info, ccwaddrs, - !rng->info.addr.ccw.assigned) < 0) - goto cleanup; - } - releaseaddr = true; + if (qemuDomainEnsureVirtioAddress(&releaseaddr, vm, &dev, "rng") < 0) + return -1; if (qemuDomainNamespaceSetupRNG(driver, vm, rng) < 0) goto cleanup; @@ -2226,7 +2179,6 @@ qemuDomainAttachRNGDevice(virConnectPtr conn, VIR_FREE(charAlias); VIR_FREE(objAlias); VIR_FREE(devstr); - virDomainCCWAddressSetFree(ccwaddrs); return ret; exit_monitor: -- 2.13.0 -- libvir-list mailing list libvir-list@redhat.com https://www.redhat.com/mailman/listinfo/libvir-list