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) {
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 (!qemuDomainCheckCCWS390AddressSupport(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;
qemuDomainReleaseDeviceAddress(vm, &controller->info, NULL);
VIR_FREE(devstr);
- virDomainCCWAddressSetFree(ccwaddrs);
return ret;
}
bool chardevAdded = false;
bool objAdded = false;
virJSONValuePtr props = NULL;
- virDomainCCWAddressSetPtr ccwaddrs = NULL;
const char *type;
int ret = -1;
int rv;
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 (!qemuDomainCheckCCWS390AddressSupport(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;
VIR_FREE(charAlias);
VIR_FREE(objAlias);
VIR_FREE(devstr);
- virDomainCCWAddressSetFree(ccwaddrs);
return ret;
exit_monitor: