This allows vhost-vdpa device to set SVQ -> guest notifier to SVQ. Signed-off-by: Eugenio Pérez <epere...@redhat.com> --- hw/virtio/vhost-shadow-virtqueue.h | 1 + hw/virtio/vhost-shadow-virtqueue.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+)
diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-virtqueue.h index 9e089edb17..607ec6e5eb 100644 --- a/hw/virtio/vhost-shadow-virtqueue.h +++ b/hw/virtio/vhost-shadow-virtqueue.h @@ -16,6 +16,7 @@ typedef struct VhostShadowVirtqueue VhostShadowVirtqueue; void vhost_svq_set_svq_kick_fd(VhostShadowVirtqueue *svq, int svq_kick_fd); +void vhost_svq_set_guest_call_notifier(VhostShadowVirtqueue *svq, int call_fd); const EventNotifier *vhost_svq_get_dev_kick_notifier( const VhostShadowVirtqueue *svq); const EventNotifier *vhost_svq_get_svq_call_notifier( diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c index 7acac1be87..6535eefccd 100644 --- a/hw/virtio/vhost-shadow-virtqueue.c +++ b/hw/virtio/vhost-shadow-virtqueue.c @@ -30,6 +30,9 @@ typedef struct VhostShadowVirtqueue { */ EventNotifier svq_kick; + /* Guest's call notifier, where SVQ calls guest. */ + EventNotifier svq_call; + /* Device's host notifier memory region. NULL means no region */ void *host_notifier_mr; @@ -84,6 +87,19 @@ const EventNotifier *vhost_svq_get_svq_call_notifier( return &svq->hdev_call; } +/** + * Set the call notifier for the SVQ to call the guest + * + * @svq Shadow virtqueue + * @call_fd call notifier + * + * Called on BQL context. + */ +void vhost_svq_set_guest_call_notifier(VhostShadowVirtqueue *svq, int call_fd) +{ + event_notifier_init_fd(&svq->svq_call, call_fd); +} + /** * Convenience function to set guest to SVQ kick fd * -- 2.27.0