Hi, > The function vhost.c:vhost_dev_stop fetches the vring base so the vq > state can be migrated to other devices. However, this is unreliable in > vdpa, since we didn't signal the device to suspend the queues, making > the value fetched useless. > > Suspend the device if possible before fetching first and subsequent > vring bases. > > Moreover, vdpa totally reset and wipes the device at the last device > before fetch its vrings base, making that operation useless in the last > device. This will be fixed in later patches of this series. > > Signed-off-by: Eugenio Pérez <eperezma@xxxxxxxxxx> > --- > hw/virtio/vhost-vdpa.c | 19 +++++++++++++++++++ > hw/virtio/trace-events | 1 + > 2 files changed, 20 insertions(+) > > diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c > index 1d0209d6ad..796f38d64e 100644 > --- a/hw/virtio/vhost-vdpa.c > +++ b/hw/virtio/vhost-vdpa.c > @@ -1109,6 +1109,24 @@ static void vhost_vdpa_svqs_stop(struct vhost_dev *dev) > } > } > > +static void vhost_vdpa_suspend(struct vhost_dev *dev) > +{ > + struct vhost_vdpa *v = dev->opaque; > + int r; > + > + if (!vhost_vdpa_first_dev(dev) || > + !(dev->backend_features & BIT_ULL(VHOST_BACKEND_F_SUSPEND))) { Shouldn't it be backend_cap? _______________________________________________ Virtualization mailing list Virtualization@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/virtualization