diff options
author | Eugenio Pérez <eperezma@redhat.com> | 2022-03-14 18:34:42 +0100 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2022-03-15 13:57:44 +0800 |
commit | dff4426fa6562b6837ddc662a61836ae11ac4fae (patch) | |
tree | fc27baf7ae8d8b14a41dc3d1497052b15511cfd5 /hw/virtio/vhost-shadow-virtqueue.h | |
parent | 10857ec0ad5d201d524d20b477da1cf3f7f4a3b0 (diff) | |
download | qemu-dff4426fa6562b6837ddc662a61836ae11ac4fae.zip qemu-dff4426fa6562b6837ddc662a61836ae11ac4fae.tar.gz qemu-dff4426fa6562b6837ddc662a61836ae11ac4fae.tar.bz2 |
vhost: Add Shadow VirtQueue kick forwarding capabilities
At this mode no buffer forwarding will be performed in SVQ mode: Qemu
will just forward the guest's kicks to the device.
Host memory notifiers regions are left out for simplicity, and they will
not be addressed in this series.
Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'hw/virtio/vhost-shadow-virtqueue.h')
-rw-r--r-- | hw/virtio/vhost-shadow-virtqueue.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/hw/virtio/vhost-shadow-virtqueue.h b/hw/virtio/vhost-shadow-virtqueue.h index f1519e3..1cbc87d 100644 --- a/hw/virtio/vhost-shadow-virtqueue.h +++ b/hw/virtio/vhost-shadow-virtqueue.h @@ -18,8 +18,22 @@ typedef struct VhostShadowVirtqueue { EventNotifier hdev_kick; /* Shadow call notifier, sent to vhost */ EventNotifier hdev_call; + + /* + * Borrowed virtqueue's guest to host notifier. To borrow it in this event + * notifier allows to recover the VhostShadowVirtqueue from the event loop + * easily. If we use the VirtQueue's one, we don't have an easy way to + * retrieve VhostShadowVirtqueue. + * + * So shadow virtqueue must not clean it, or we would lose VirtQueue one. + */ + EventNotifier svq_kick; } VhostShadowVirtqueue; +void vhost_svq_set_svq_kick_fd(VhostShadowVirtqueue *svq, int svq_kick_fd); + +void vhost_svq_stop(VhostShadowVirtqueue *svq); + VhostShadowVirtqueue *vhost_svq_new(void); void vhost_svq_free(gpointer vq); |