ping.
> qemuDomainSupportsNicdev will check the device address type on
> aarch64. If it is invoked before device address assigned, hotadd
> vhostuser interface with no address specified will get error.
> Let qemuDomainEnsurePCIAddress run before qemuDomainSupportsNicdev.
>
> Signed-off-by: Wang Yechao
> ---
> v1 patch:
> https://www.redhat.com/archives/libvir-list/2018-December/msg00435.html
>
> Changes in v2:
> - do not modify the address type, let qemuDomainEnsurePCIAddress do it.
> ---
> src/qemu/qemu_hotplug.c | 38 +++++++++++++++++++-------------------
> 1 file changed, 19 insertions(+), 19 deletions(-)
>
> diff --git a/src/qemu/qemu_hotplug.c b/src/qemu/qemu_hotplug.c
> index 8da0233..f25c8db 100644
> --- a/src/qemu/qemu_hotplug.c
> +++ b/src/qemu/qemu_hotplug.c
> @@ -1369,6 +1369,25 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
> if (qemuAssignDeviceNetAlias(vm->def, net, -1) < 0)
> goto cleanup;
>
> + if (qemuDomainIsS390CCW(vm->def) &&
> + net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
> + virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CCW)) {
> + net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
> + if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
> + goto cleanup;
> + if (virDomainCCWAddressAssign(&net->info, ccwaddrs,
> + !net->info.addr.ccw.assigned) < 0)
> + goto cleanup;
> + } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) {
> + virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> + _("virtio-s390 net device cannot be hotplugged."));
> + goto cleanup;
> + } else if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) {
> + goto cleanup;
> + }
> +
> + releaseaddr = true;
> +
> switch (actualType) {
> case VIR_DOMAIN_NET_TYPE_BRIDGE:
> case VIR_DOMAIN_NET_TYPE_NETWORK:
> @@ -1503,25 +1522,6 @@ qemuDomainAttachNetDevice(virQEMUDriverPtr driver,
> goto cleanup;
> }
>
> - if (qemuDomainIsS390CCW(vm->def) &&
> - net->info.type != VIR_DOMAIN_DEVICE_ADDRESS_TYPE_PCI &&
> - virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_CCW)) {
> - net->info.type = VIR_DOMAIN_DEVICE_ADDRESS_TYPE_CCW;
> - if (!(ccwaddrs = virDomainCCWAddressSetCreateFromDomain(vm->def)))
> - goto cleanup;
> - if (virDomainCCWAddressAssign(&net->info, ccwaddrs,
> - !net->info.addr.ccw.assigned) < 0)
> - goto cleanup;
> - } else if (virQEMUCapsGet(priv->qemuCaps, QEMU_CAPS_VIRTIO_S390)) {
> - virReportError(VIR_ERR_CONFIG_UNSUPPORTED, "%s",
> - _("virtio-s390 net device cannot be hotplugged."));
> - goto cleanup;
> - } else if (qemuDomainEnsurePCIAddress(vm, &dev, driver) < 0) {
> - goto cleanup;
> - }
> -
> - releaseaddr = true;
> -
> if (VIR_ALLOC_N(tapfdName, tapfdSize) < 0 ||
> VIR_ALLOC_N(vhostfdName, vhostfdSize) < 0)
> goto cleanup;
---
Best wishes
Wang Yechao
--
libvir-list mailing list
libvir-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/libvir-list