On Mon, Feb 27, 2023 at 9:13 AM Jason Wang <jasowang@redhat.com> wrote:
>
>
> 在 2023/2/24 23:54, Eugenio Pérez 写道:
> > Devices with CVQ needs to migrate state beyond vq state. Leaving this
> > to future series.
> >
> > Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
> > ---
> > v3: Migration blocker is registered in vhost_dev.
> > ---
> > include/hw/virtio/vhost-vdpa.h | 1 +
> > hw/virtio/vhost-vdpa.c | 1 +
> > net/vhost-vdpa.c | 9 +++++++++
> > 3 files changed, 11 insertions(+)
> >
> > diff --git a/include/hw/virtio/vhost-vdpa.h b/include/hw/virtio/vhost-vdpa.h
> > index 4a7d396674..c278a2a8de 100644
> > --- a/include/hw/virtio/vhost-vdpa.h
> > +++ b/include/hw/virtio/vhost-vdpa.h
> > @@ -50,6 +50,7 @@ typedef struct vhost_vdpa {
> > const VhostShadowVirtqueueOps *shadow_vq_ops;
> > void *shadow_vq_ops_opaque;
> > struct vhost_dev *dev;
> > + Error *migration_blocker;
> > VhostVDPAHostNotifier notifier[VIRTIO_QUEUE_MAX];
> > } VhostVDPA;
> >
> > diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c
> > index 27655e7582..25b64ae854 100644
> > --- a/hw/virtio/vhost-vdpa.c
> > +++ b/hw/virtio/vhost-vdpa.c
> > @@ -438,6 +438,7 @@ static int vhost_vdpa_init(struct vhost_dev *dev, void *opaque, Error **errp)
> > v->msg_type = VHOST_IOTLB_MSG_V2;
> > vhost_vdpa_init_svq(dev, v);
> >
> > + error_propagate(&dev->migration_blocker, v->migration_blocker);
> > if (!vhost_vdpa_first_dev(dev)) {
> > return 0;
> > }
> > diff --git a/net/vhost-vdpa.c b/net/vhost-vdpa.c
> > index c5512ddf10..4f983df000 100644
> > --- a/net/vhost-vdpa.c
> > +++ b/net/vhost-vdpa.c
> > @@ -828,6 +828,15 @@ static NetClientState *net_vhost_vdpa_init(NetClientState *peer,
> >
> > s->vhost_vdpa.shadow_vq_ops = &vhost_vdpa_net_svq_ops;
> > s->vhost_vdpa.shadow_vq_ops_opaque = s;
> > +
> > + /*
> > + * TODO: We cannot migrate devices with CVQ as there is no way to set
> > + * the device state (MAC, MQ, etc) before starting datapath.
> > + *
> > + * Migration blocker ownership now belongs to v
>
>
> The sentence is incomplete.
>
Right, I'll fix it for the next version.
Thanks!
> Other looks good.
>
> Thanks
>
>
> > + */
> > + error_setg(&s->vhost_vdpa.migration_blocker,
> > + "net vdpa cannot migrate with CVQ feature");
> > }
> > ret = vhost_vdpa_add(nc, (void *)&s->vhost_vdpa, queue_pair_index, nvqs);
> > if (ret) {
>