From: "Michael S. Tsirkin" <mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
To: linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
Cc: Krishna Kumar <krkumar2-xthvdsQ13ZrQT0dZR+AlfA@public.gmane.org>,
Carsten Otte <cotte-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
lguest-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org,
Shirley Ma <xma-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>,
kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
linux-s390-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
habanero-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org,
Heiko Carstens
<heiko.carstens-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org,
steved-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org,
Christian Borntraeger
<borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
Tom Lendacky
<tahm-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>,
Martin Schwidefsky
<schwidefsky-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org>,
linux390-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org
Subject: [PATCHv2 02/14] virtio ring: inline function to check for events
Date: Fri, 20 May 2011 02:10:27 +0300 [thread overview]
Message-ID: <16ce853af7a80d0f7cb0c1118ba8e19adc184ad0.1305846412.git.mst@redhat.com> (raw)
In-Reply-To: <cover.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
With the new used_event and avail_event and features, both
host and guest need similar logic to check whether events are
enabled, so it helps to put the common code in the header.
Note that Xen has similar logic for notification hold-off
in include/xen/interface/io/ring.h with req_event and req_prod
corresponding to event_idx + 1 and new_idx respectively.
+1 comes from the fact that req_event and req_prod in Xen start at 1,
while event index in virtio starts at 0.
Signed-off-by: Michael S. Tsirkin <mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
---
include/linux/virtio_ring.h | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
index 70b0b39..cf020e3 100644
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -123,6 +123,20 @@ static inline unsigned vring_size(unsigned int num, unsigned long align)
+ sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * num;
}
+/* The following is used with USED_EVENT_IDX and AVAIL_EVENT_IDX */
+/* Assuming a given event_idx value from the other size, if
+ * we have just incremented index from old to new_idx,
+ * should we trigger an event? */
+static inline int vring_need_event(__u16 event_idx, __u16 new_idx, __u16 old)
+{
+ /* Note: Xen has similar logic for notification hold-off
+ * in include/xen/interface/io/ring.h with req_event and req_prod
+ * corresponding to event_idx + 1 and new_idx respectively.
+ * Note also that req_event and req_prod in Xen start at 1,
+ * event indexes in virtio start at 0. */
+ return (__u16)(new_idx - event_idx - 1) < (__u16)(new_idx - old);
+}
+
#ifdef __KERNEL__
#include <linux/irqreturn.h>
struct virtio_device;
--
1.7.5.53.gc233e
next prev parent reply other threads:[~2011-05-19 23:10 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-19 23:10 [PATCHv2 00/14] virtio and vhost-net performance enhancements Michael S. Tsirkin
[not found] ` <cover.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-19 23:10 ` [PATCHv2 01/14] virtio: event index interface Michael S. Tsirkin
[not found] ` <995d19795d84a76f9836f4d9484fb4ef8eae36e9.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:29 ` Rusty Russell
2011-05-19 23:10 ` Michael S. Tsirkin [this message]
[not found] ` <16ce853af7a80d0f7cb0c1118ba8e19adc184ad0.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:29 ` [PATCHv2 02/14] virtio ring: inline function to check for events Rusty Russell
2011-05-19 23:10 ` [PATCHv2 03/14] virtio_ring: support event idx feature Michael S. Tsirkin
[not found] ` <960f3e3b260844011b004c81dbda0661c977b79a.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:31 ` Rusty Russell
2011-05-19 23:10 ` [PATCHv2 04/14] vhost: support event index Michael S. Tsirkin
[not found] ` <b227febf884dcf82dee9233e581c6216d0e9daa5.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:31 ` Rusty Russell
2011-05-19 23:11 ` [PATCHv2 05/14] virtio_test: " Michael S. Tsirkin
[not found] ` <fbed57582b9e8d97c11f889937ea65f42eb03da2.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:32 ` Rusty Russell
2011-05-19 23:11 ` [PATCHv2 06/14] virtio: add api for delayed callbacks Michael S. Tsirkin
[not found] ` <8f343dcaa996f6b10499468c49508ba9d6fb6f5a.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:33 ` Rusty Russell
2011-05-19 23:11 ` [PATCHv2 07/14] virtio_net: delay TX callbacks Michael S. Tsirkin
2011-05-19 23:11 ` [PATCHv2 08/14] virtio_ring: Add capacity check API Michael S. Tsirkin
2011-05-19 23:11 ` [PATCHv2 09/14] virtio_net: fix TX capacity checks using new API Michael S. Tsirkin
[not found] ` <42ca2494c92f572388e3ab4c6f613dd4f038361b.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:13 ` Rusty Russell
2011-05-19 23:11 ` [PATCHv2 10/14] virtio_net: limit xmit polling Michael S. Tsirkin
[not found] ` <aced8619c07018b5495f9ceb2c02d4fbf897a098.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:19 ` Rusty Russell
[not found] ` <877h9kvlps.fsf-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
2011-05-22 12:10 ` Michael S. Tsirkin
[not found] ` <20110522121008.GA12155-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-23 2:07 ` Rusty Russell
[not found] ` <87boyutbjg.fsf-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
2011-05-23 11:19 ` Michael S. Tsirkin
[not found] ` <20110523111900.GB27212-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-24 7:54 ` Krishna Kumar2
[not found] ` <OFEED174CD.D3C9A726-ON6525789A.002661D5-6525789A.002B26ED-xthvdsQ13ZrQT0dZR+AlfA@public.gmane.org>
2011-05-24 9:12 ` Michael S. Tsirkin
2011-05-24 9:27 ` Krishna Kumar2
[not found] ` <OF69E520FD.340352AC-ON6525789A.003308A2-6525789A.0033F2DF-xthvdsQ13ZrQT0dZR+AlfA@public.gmane.org>
2011-05-24 11:29 ` Michael S. Tsirkin
[not found] ` <20110524112901.GB17087-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-24 12:50 ` Krishna Kumar2
[not found] ` <OF2D4A7890.FFA91132-ON6525789A.0043E0AC-6525789A.00464690-xthvdsQ13ZrQT0dZR+AlfA@public.gmane.org>
2011-05-24 13:52 ` Michael S. Tsirkin
2011-05-25 1:28 ` Rusty Russell
[not found] ` <8762ozk1qd.fsf-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
2011-05-25 5:50 ` Michael S. Tsirkin
2011-05-25 1:35 ` Rusty Russell
[not found] ` <8739k3k1fb.fsf-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
2011-05-25 6:07 ` Michael S. Tsirkin
[not found] ` <20110525060759.GC26352-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-26 3:28 ` Rusty Russell
[not found] ` <87vcwyjg2w.fsf-8n+1lVoiYb80n/F98K4Iww@public.gmane.org>
2011-05-28 20:02 ` Michael S. Tsirkin
[not found] ` <20110528200204.GB7046-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-30 6:27 ` Rusty Russell
2011-05-19 23:12 ` [PATCHv2 11/14] virtio: don't delay avail index update Michael S. Tsirkin
[not found] ` <33d7df119ccbedc9b54fbe4b674076b4f7ba3499.1305846412.git.mst-H+wXaHxf7aLQT0dZR+AlfA@public.gmane.org>
2011-05-21 2:26 ` Rusty Russell
2011-05-19 23:12 ` [PATCHv2 13/14] virtio_test: update for 64 bit features Michael S. Tsirkin
2011-05-19 23:12 ` [PATCHv2 14/14] vhost: fix " Michael S. Tsirkin
2011-05-20 7:51 ` [PATCHv2 00/14] virtio and vhost-net performance enhancements Rusty Russell
2011-05-26 15:32 ` [PERF RESULTS] " Krishna Kumar2
2011-05-26 15:42 ` Shirley Ma
2011-05-26 16:21 ` Krishna Kumar2
[not found] ` <OFF9D0E604.B865A006-ON6525789C.00597010-6525789C.0059987A@LocalDomain>
2011-05-26 16:29 ` Krishna Kumar2
2011-05-19 23:12 ` [PATCHv2 12/14] virtio: 64 bit features Michael S. Tsirkin
2011-05-19 23:20 ` [PATCHv2 00/14] virtio and vhost-net performance enhancements David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=16ce853af7a80d0f7cb0c1118ba8e19adc184ad0.1305846412.git.mst@redhat.com \
--to=mst-h+wxahxf7alqt0dzr+alfa@public.gmane.org \
--cc=borntraeger-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=cotte-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=habanero-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=heiko.carstens-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=krkumar2-xthvdsQ13ZrQT0dZR+AlfA@public.gmane.org \
--cc=kvm-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=lguest-uLR06cmDAlY/bJ5BZ2RsiQ@public.gmane.org \
--cc=linux-kernel-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux-s390-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=linux390-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org \
--cc=schwidefsky-tA70FqPdS9bQT0dZR+AlfA@public.gmane.org \
--cc=steved-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
--cc=tahm-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
--cc=virtualization-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=xma-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).