Adding Cindy and Eugenio

On Thu, Mar 20, 2025 at 12:34 AM Konstantin Shkolnyy <k...@linux.ibm.com> wrote:
>
> I’m observing a problem while testing VDPA with Nvidia ConnectX-6 (mlx5)
> on s390.
>
> Upon start, virtio_net_device_realize() tries to set a new MAC address
> by VHOST_VDPA_SET_CONFIG which doesn’t do anything.
>
> Later, the VM gets started and learns about the old address from
> virtio_net_get_config() which returns whatever VHOST_VDPA_GET_CONFIG
> returns, unless it's "6 zero bytes", in which case it instead returns
> the desired new address (and the problem is avoided).
>
> Then QEMU again tries to set the new address from vhost_net_start(), now
> by calling vhost_vdpa_net_load_cmd(...,VIRTIO_NET_CTRL_MAC,
> VIRTIO_NET_CTRL_MAC_ADDR_SET, ...). This time the new address is
> successfully programmed into the NIC, but the VM doesn't know about it.

Have you enabled shadow virtqueue? If yes, does it work if you don't do that?

>
> As the result, the VM now sends packets with a source address on which
> the NIC doesn’t listen.
>
> Upon reading this forum, I see that VHOST_VDPA_SET_CONFIG is
> “deprecated”, and so VIRTIO_NET_CTRL_MAC_ADDR_SET must be the right
> method, but it’s apparently called too late.

VHOST_VDPA_SET_CONFIG requires the vDPA parent support which is not
necessarily there.
VIRTIO_NET_CTRL_MAC_ADDR_SET requires the shadow virtqueue as well as
the CTRL_MAC_ADDR support.

Neither of them seems robust.

> Or maybe
> virtio_net_get_config() needs to always return the desired new address
> and not the old one from VHOST_VDPA_GET_CONFIG?
>
> I’m looking for an opinion/direction from someone who knows this code.
>
> As it is, the only VDPA scenario that's working for me is:
> 1) Avoid specifying the MAC address in the "vdpa dev add" command (which
> will create the "6 zero bytes" condition on the first launch).
> 2) Keep using the same MAC address for every subsequent VM launch on the
> same NIC "virtual function" (so that the old and new addresses are the
> same).

This is the way we currently use it. Is there any limitation of this?

Thanks

>


Reply via email to