[libvirt] [PATCH v2] qemu: Assign device address before qemuDomainSupportsNicdev

wang.yechao255 at zte.com.cn wang.yechao255 at zte.com.cn
Tue Jan 15 03:24:53 UTC 2019


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


More information about the libvir-list mailing list