Messages in this thread | | | Date | Tue, 28 Mar 2023 14:17:50 +0800 | Subject | Re: [PATCH v4 08/11] vdpa: Add eventfd for the vdpa callback | From | Jason Wang <> |
| |
在 2023/3/23 13:30, Xie Yongji 写道: > Add eventfd for the vdpa callback so that user > can signal it directly instead of triggering the > callback. It will be used for vhost-vdpa case. > > Signed-off-by: Xie Yongji <xieyongji@bytedance.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Thanks
> --- > drivers/vhost/vdpa.c | 2 ++ > drivers/virtio/virtio_vdpa.c | 1 + > include/linux/vdpa.h | 6 ++++++ > 3 files changed, 9 insertions(+) > > diff --git a/drivers/vhost/vdpa.c b/drivers/vhost/vdpa.c > index 7be9d9d8f01c..9cd878e25cff 100644 > --- a/drivers/vhost/vdpa.c > +++ b/drivers/vhost/vdpa.c > @@ -599,9 +599,11 @@ static long vhost_vdpa_vring_ioctl(struct vhost_vdpa *v, unsigned int cmd, > if (vq->call_ctx.ctx) { > cb.callback = vhost_vdpa_virtqueue_cb; > cb.private = vq; > + cb.trigger = vq->call_ctx.ctx; > } else { > cb.callback = NULL; > cb.private = NULL; > + cb.trigger = NULL; > } > ops->set_vq_cb(vdpa, idx, &cb); > vhost_vdpa_setup_vq_irq(v, idx); > diff --git a/drivers/virtio/virtio_vdpa.c b/drivers/virtio/virtio_vdpa.c > index f3826f42b704..2a095f37f26b 100644 > --- a/drivers/virtio/virtio_vdpa.c > +++ b/drivers/virtio/virtio_vdpa.c > @@ -196,6 +196,7 @@ virtio_vdpa_setup_vq(struct virtio_device *vdev, unsigned int index, > /* Setup virtqueue callback */ > cb.callback = callback ? virtio_vdpa_virtqueue_cb : NULL; > cb.private = info; > + cb.trigger = NULL; > ops->set_vq_cb(vdpa, index, &cb); > ops->set_vq_num(vdpa, index, virtqueue_get_vring_size(vq)); > > diff --git a/include/linux/vdpa.h b/include/linux/vdpa.h > index e52c9a37999c..0372b2e3d38a 100644 > --- a/include/linux/vdpa.h > +++ b/include/linux/vdpa.h > @@ -13,10 +13,16 @@ > * struct vdpa_calllback - vDPA callback definition. > * @callback: interrupt callback function > * @private: the data passed to the callback function > + * @trigger: the eventfd for the callback (Optional). > + * When it is set, the vDPA driver must guarantee that > + * signaling it is functional equivalent to triggering > + * the callback. Then vDPA parent can signal it directly > + * instead of triggering the callback. > */ > struct vdpa_callback { > irqreturn_t (*callback)(void *data); > void *private; > + struct eventfd_ctx *trigger; > }; > > /**
| |