On Fri, Jan 13, 2023 at 1:27 AM Eugenio Pérez <epere...@redhat.com> wrote: > > Spuriously kick the destination device's queue so it knows in case there > are new descriptors. > > RFC: This is somehow a gray area. The guest may have placed descriptors > in a virtqueue but not kicked it, so it might be surprised if the device > starts processing it.
So I think this is kind of the work of the vDPA parent. For the parent that needs this trick, we should do it in the parent driver. Thanks > > However, that information is not in the migration stream and it should > be an edge case anyhow, being resilient to parallel notifications from > the guest. > > Signed-off-by: Eugenio Pérez <epere...@redhat.com> > --- > hw/virtio/vhost-vdpa.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c > index 40b7e8706a..dff94355dd 100644 > --- a/hw/virtio/vhost-vdpa.c > +++ b/hw/virtio/vhost-vdpa.c > @@ -732,11 +732,16 @@ static int vhost_vdpa_set_vring_ready(struct vhost_dev > *dev, int ready) > } > trace_vhost_vdpa_set_vring_ready(dev); > for (i = 0; i < dev->nvqs; ++i) { > + VirtQueue *vq; > struct vhost_vring_state state = { > .index = dev->vq_index + i, > .num = 1, > }; > vhost_vdpa_call(dev, VHOST_VDPA_SET_VRING_ENABLE, &state); > + > + /* Preemptive kick */ > + vq = virtio_get_queue(dev->vdev, dev->vq_index + i); > + event_notifier_set(virtio_queue_get_host_notifier(vq)); > } > return 0; > } > -- > 2.31.1 >