On Mon, Feb 28, 2022 at 8:38 AM Jason Wang <jasow...@redhat.com> wrote: > > > 在 2022/2/27 下午9:41, Eugenio Pérez 写道: > > This is needed to achieve migration, so the destination can restore its > > index. > > > I suggest to duplicate the comment below here. >
Sure, I'll duplicate here in the commit message. Thanks! > Thanks > > > > Signed-off-by: Eugenio Pérez <epere...@redhat.com> > > --- > > hw/virtio/vhost-vdpa.c | 17 +++++++++++++++++ > > 1 file changed, 17 insertions(+) > > > > diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c > > index 56f9f125cd..accc4024c2 100644 > > --- a/hw/virtio/vhost-vdpa.c > > +++ b/hw/virtio/vhost-vdpa.c > > @@ -1180,8 +1180,25 @@ static int vhost_vdpa_set_vring_base(struct > > vhost_dev *dev, > > static int vhost_vdpa_get_vring_base(struct vhost_dev *dev, > > struct vhost_vring_state *ring) > > { > > + struct vhost_vdpa *v = dev->opaque; > > int ret; > > > > + if (v->shadow_vqs_enabled) { > > + VhostShadowVirtqueue *svq = g_ptr_array_index(v->shadow_vqs, > > + ring->index); > > + > > + /* > > + * Setting base as last used idx, so destination will see as > > available > > + * all the entries that the device did not use, including the > > in-flight > > + * processing ones. > > + * > > + * TODO: This is ok for networking, but other kinds of devices > > might > > + * have problems with these retransmissions. > > + */ > > + ring->num = svq->last_used_idx; > > + return 0; > > + } > > + > > ret = vhost_vdpa_call(dev, VHOST_GET_VRING_BASE, ring); > > trace_vhost_vdpa_get_vring_base(dev, ring->index, ring->num); > > return ret; >