qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [6865] virtio: Allow guest to defer VIRTIO_F_NOTIFY_ON_EMPT


From: Anthony Liguori
Subject: [Qemu-devel] [6865] virtio: Allow guest to defer VIRTIO_F_NOTIFY_ON_EMPTY ( Alex Williamson)
Date: Fri, 20 Mar 2009 16:13:51 +0000

Revision: 6865
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=6865
Author:   aliguori
Date:     2009-03-20 16:13:50 +0000 (Fri, 20 Mar 2009)
Log Message:
-----------
virtio: Allow guest to defer VIRTIO_F_NOTIFY_ON_EMPTY (Alex Williamson)

There may be cases where the guest does not want the avail queue
interrupt, even when it's empty.  For the virtio-net case, the
guest may use a different buffering scheme or decide polling for
used buffers is more efficient.  This can be accomplished by simply
checking for whether the guest has acknowledged the existing notify
on empty flag.

Signed-off-by: Alex Williamson <address@hidden>
Signed-off-by: Anthony Liguori <address@hidden>

Modified Paths:
--------------
    trunk/hw/virtio.c

Modified: trunk/hw/virtio.c
===================================================================
--- trunk/hw/virtio.c   2009-03-20 16:13:47 UTC (rev 6864)
+++ trunk/hw/virtio.c   2009-03-20 16:13:50 UTC (rev 6865)
@@ -726,9 +726,10 @@
 
 void virtio_notify(VirtIODevice *vdev, VirtQueue *vq)
 {
-    /* Always notify when queue is empty */
-    if ((vq->inuse || vring_avail_idx(vq) != vq->last_avail_idx) &&
-        (vring_avail_flags(vq) & VRING_AVAIL_F_NO_INTERRUPT))
+    /* Always notify when queue is empty (when feature acknowledge) */
+    if ((vring_avail_flags(vq) & VRING_AVAIL_F_NO_INTERRUPT) &&
+        (!(vdev->features & (1 << VIRTIO_F_NOTIFY_ON_EMPTY)) ||
+         (vq->inuse || vring_avail_idx(vq) != vq->last_avail_idx)))
         return;
 
     vdev->isr |= 0x01;





reply via email to

[Prev in Thread] Current Thread [Next in Thread]