On Thu, Mar 20, 2025 at 1:59 AM Jason Wang <jasow...@redhat.com> wrote:
>
> 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?
>

Either you're using SVQ or not, is cmdline nic mac address the same as
the provided with the vdpa command?

> >
> > 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.
>

Nit, VIRTIO_NET_CTRL_MAC_ADDR_SET does not require SVQ. You are not
able to migrate if SVQ cannot be enabled, for example, because it does
not support a given feature.

> 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