Message ID | 20230224155438.112797-12-eperezma@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Dynamically switch to vhost shadow virtqueues at vdpa net migration | expand |
在 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. 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) {
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) { >
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 + */ + 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) {
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(+)