On Wed, Nov 9, 2022 at 1:08 AM Eugenio Pérez <eperezma@redhat.com> wrote:
>
> By the end of this series CVQ is shadowed as long as the features
> support it.
>
> Since we don't know at the beginning of qemu running if this is
> supported, move the event notifier handler setting to the start of the
> SVQ, instead of the start of qemu run.
>
> Signed-off-by: Eugenio Pérez <eperezma@redhat.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Thanks
> ---
> hw/virtio/vhost-shadow-virtqueue.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/hw/virtio/vhost-shadow-virtqueue.c b/hw/virtio/vhost-shadow-virtqueue.c
> index 5bd14cad96..264ddc166d 100644
> --- a/hw/virtio/vhost-shadow-virtqueue.c
> +++ b/hw/virtio/vhost-shadow-virtqueue.c
> @@ -648,6 +648,7 @@ void vhost_svq_start(VhostShadowVirtqueue *svq, VirtIODevice *vdev,
> {
> size_t desc_size, driver_size, device_size;
>
> + event_notifier_set_handler(&svq->hdev_call, vhost_svq_handle_call);
> svq->next_guest_avail_elem = NULL;
> svq->shadow_avail_idx = 0;
> svq->shadow_used_idx = 0;
> @@ -704,6 +705,7 @@ void vhost_svq_stop(VhostShadowVirtqueue *svq)
> g_free(svq->desc_state);
> qemu_vfree(svq->vring.desc);
> qemu_vfree(svq->vring.used);
> + event_notifier_set_handler(&svq->hdev_call, NULL);
> }
>
> /**
> @@ -740,7 +742,6 @@ VhostShadowVirtqueue *vhost_svq_new(VhostIOVATree *iova_tree,
> }
>
> event_notifier_init_fd(&svq->svq_kick, VHOST_FILE_UNBIND);
> - event_notifier_set_handler(&svq->hdev_call, vhost_svq_handle_call);
> svq->iova_tree = iova_tree;
> svq->ops = ops;
> svq->ops_opaque = ops_opaque;
> @@ -763,7 +764,6 @@ void vhost_svq_free(gpointer pvq)
> VhostShadowVirtqueue *vq = pvq;
> vhost_svq_stop(vq);
> event_notifier_cleanup(&vq->hdev_kick);
> - event_notifier_set_handler(&vq->hdev_call, NULL);
> event_notifier_cleanup(&vq->hdev_call);
> g_free(vq);
> }
> --
> 2.31.1
>