Jason Wang
2022-Jan-29 08:05 UTC
[PATCH 09/31] vhost-vdpa: Take into account SVQ in vhost_vdpa_set_vring_call
? 2022/1/22 ??4:27, Eugenio P?rez ??:> Signed-off-by: Eugenio P?rez <eperezma at redhat.com> > --- > hw/virtio/vhost-vdpa.c | 20 ++++++++++++++++++-- > 1 file changed, 18 insertions(+), 2 deletions(-) > > diff --git a/hw/virtio/vhost-vdpa.c b/hw/virtio/vhost-vdpa.c > index 18de14f0fb..029f98feee 100644 > --- a/hw/virtio/vhost-vdpa.c > +++ b/hw/virtio/vhost-vdpa.c > @@ -687,13 +687,29 @@ static int vhost_vdpa_set_vring_kick(struct vhost_dev *dev, > } > } > > -static int vhost_vdpa_set_vring_call(struct vhost_dev *dev, > - struct vhost_vring_file *file) > +static int vhost_vdpa_set_vring_dev_call(struct vhost_dev *dev, > + struct vhost_vring_file *file) > { > trace_vhost_vdpa_set_vring_call(dev, file->index, file->fd); > return vhost_vdpa_call(dev, VHOST_SET_VRING_CALL, file); > } > > +static int vhost_vdpa_set_vring_call(struct vhost_dev *dev, > + struct vhost_vring_file *file) > +{ > + struct vhost_vdpa *v = dev->opaque; > + > + if (v->shadow_vqs_enabled) { > + int vdpa_idx = vhost_vdpa_get_vq_index(dev, file->index); > + VhostShadowVirtqueue *svq = g_ptr_array_index(v->shadow_vqs, vdpa_idx); > + > + vhost_svq_set_guest_call_notifier(svq, file->fd);Two questions here (had similar questions for vring kick): 1) Any reason that we setup the eventfd for vhost-vdpa in vhost_vdpa_svq_setup() not here? 2) The call could be disabled by using -1 as the fd, I don't see any code to deal with that. Thanks> + return 0; > + } else { > + return vhost_vdpa_set_vring_dev_call(dev, file); > + } > +} > + > /** > * Set shadow virtqueue descriptors to the device > *