Re: [Qemu-devel] [PATCH 3/8] virtio: add AioContext-specific function for host notifiers

2016-02-16 Thread Cornelia Huck
On Tue, 16 Feb 2016 15:20:17 +0800
Fam Zheng  wrote:

> On Sun, 02/14 18:17, Paolo Bonzini wrote:

> > +void virtio_queue_aio_set_host_notifier_handler(VirtQueue *vq, AioContext 
> > *ctx,
> > +bool assign, bool 
> > set_handler)
> > +{
> > +if (assign && set_handler) {
> > +aio_set_event_notifier(ctx, &vq->host_notifier, true,
> > +   virtio_queue_host_notifier_read);
> > +} else {
> > +aio_set_event_notifier(ctx, &vq->host_notifier, true, NULL);
> > +}
> > +if (!assign) {
> > +/* Test and clear notifier before after disabling event,
> 
> Does "before after" mean "after"? :)

I think that was copied verbatim from
virtio_queue_set_host_notifier_fd_handler :)




Re: [Qemu-devel] [PATCH 3/8] virtio: add AioContext-specific function for host notifiers

2016-02-15 Thread Fam Zheng
On Sun, 02/14 18:17, Paolo Bonzini wrote:
> This is used to register ioeventfd with a dataplane thread.
> 
> Signed-off-by: Paolo Bonzini 
> ---
>  hw/virtio/virtio.c | 16 
>  include/hw/virtio/virtio.h |  2 ++
>  2 files changed, 18 insertions(+)
> 
> diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
> index 90f2545..3a5cca4 100644
> --- a/hw/virtio/virtio.c
> +++ b/hw/virtio/virtio.c
> @@ -1785,6 +1785,22 @@ static void 
> virtio_queue_host_notifier_read(EventNotifier *n)
>  }
>  }
>  
> +void virtio_queue_aio_set_host_notifier_handler(VirtQueue *vq, AioContext 
> *ctx,
> +bool assign, bool 
> set_handler)
> +{
> +if (assign && set_handler) {
> +aio_set_event_notifier(ctx, &vq->host_notifier, true,
> +   virtio_queue_host_notifier_read);
> +} else {
> +aio_set_event_notifier(ctx, &vq->host_notifier, true, NULL);
> +}
> +if (!assign) {
> +/* Test and clear notifier before after disabling event,

Does "before after" mean "after"? :)

Reviewed-by: Fam Zheng 

> + * in case poll callback didn't have time to run. */
> +virtio_queue_host_notifier_read(&vq->host_notifier);
> +}
> +}
> +
>  void virtio_queue_set_host_notifier_fd_handler(VirtQueue *vq, bool assign,
> bool set_handler)
>  {
> diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
> index 108cdb0..4ce01a1 100644
> --- a/include/hw/virtio/virtio.h
> +++ b/include/hw/virtio/virtio.h
> @@ -248,6 +248,8 @@ void virtio_queue_set_guest_notifier_fd_handler(VirtQueue 
> *vq, bool assign,
>  EventNotifier *virtio_queue_get_host_notifier(VirtQueue *vq);
>  void virtio_queue_set_host_notifier_fd_handler(VirtQueue *vq, bool assign,
> bool set_handler);
> +void virtio_queue_aio_set_host_notifier_handler(VirtQueue *vq, AioContext 
> *ctx,
> +bool assign, bool 
> set_handler);
>  void virtio_queue_notify_vq(VirtQueue *vq);
>  void virtio_irq(VirtQueue *vq);
>  VirtQueue *virtio_vector_first_queue(VirtIODevice *vdev, uint16_t vector);
> -- 
> 1.8.3.1
> 
> 
> 



[Qemu-devel] [PATCH 3/8] virtio: add AioContext-specific function for host notifiers

2016-02-14 Thread Paolo Bonzini
This is used to register ioeventfd with a dataplane thread.

Signed-off-by: Paolo Bonzini 
---
 hw/virtio/virtio.c | 16 
 include/hw/virtio/virtio.h |  2 ++
 2 files changed, 18 insertions(+)

diff --git a/hw/virtio/virtio.c b/hw/virtio/virtio.c
index 90f2545..3a5cca4 100644
--- a/hw/virtio/virtio.c
+++ b/hw/virtio/virtio.c
@@ -1785,6 +1785,22 @@ static void 
virtio_queue_host_notifier_read(EventNotifier *n)
 }
 }
 
+void virtio_queue_aio_set_host_notifier_handler(VirtQueue *vq, AioContext *ctx,
+bool assign, bool set_handler)
+{
+if (assign && set_handler) {
+aio_set_event_notifier(ctx, &vq->host_notifier, true,
+   virtio_queue_host_notifier_read);
+} else {
+aio_set_event_notifier(ctx, &vq->host_notifier, true, NULL);
+}
+if (!assign) {
+/* Test and clear notifier before after disabling event,
+ * in case poll callback didn't have time to run. */
+virtio_queue_host_notifier_read(&vq->host_notifier);
+}
+}
+
 void virtio_queue_set_host_notifier_fd_handler(VirtQueue *vq, bool assign,
bool set_handler)
 {
diff --git a/include/hw/virtio/virtio.h b/include/hw/virtio/virtio.h
index 108cdb0..4ce01a1 100644
--- a/include/hw/virtio/virtio.h
+++ b/include/hw/virtio/virtio.h
@@ -248,6 +248,8 @@ void virtio_queue_set_guest_notifier_fd_handler(VirtQueue 
*vq, bool assign,
 EventNotifier *virtio_queue_get_host_notifier(VirtQueue *vq);
 void virtio_queue_set_host_notifier_fd_handler(VirtQueue *vq, bool assign,
bool set_handler);
+void virtio_queue_aio_set_host_notifier_handler(VirtQueue *vq, AioContext *ctx,
+bool assign, bool set_handler);
 void virtio_queue_notify_vq(VirtQueue *vq);
 void virtio_irq(VirtQueue *vq);
 VirtQueue *virtio_vector_first_queue(VirtIODevice *vdev, uint16_t vector);
-- 
1.8.3.1