dev.dpdk.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] vhost: flush used->idx update before reading avail->flags
@ 2015-04-22 16:33 Huawei Xie
       [not found] ` <1429720392-25345-1-git-send-email-huawei.xie-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
  0 siblings, 1 reply; 17+ messages in thread
From: Huawei Xie @ 2015-04-22 16:33 UTC (permalink / raw)
  To: dev-VfR2kkLFssw; +Cc: mst-H+wXaHxf7aLQT0dZR+AlfA

update of used->idx and read of avail->flags could be reordered.
memory fence should be used to ensure the order, otherwise guest could see a stale used->idx value after it toggles the interrupt suppression flag.

Signed-off-by: Huawei Xie <huawei.xie-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
---
 lib/librte_vhost/vhost_rxtx.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/lib/librte_vhost/vhost_rxtx.c b/lib/librte_vhost/vhost_rxtx.c
index 510ffe8..6afba35 100644
--- a/lib/librte_vhost/vhost_rxtx.c
+++ b/lib/librte_vhost/vhost_rxtx.c
@@ -178,6 +178,9 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id,
 	*(volatile uint16_t *)&vq->used->idx += count;
 	vq->last_used_idx = res_end_idx;
 
+	/* flush used->idx update before we read avail->flags. */
+	rte_mb();
+
 	/* Kick the guest if necessary. */
 	if (!(vq->avail->flags & VRING_AVAIL_F_NO_INTERRUPT))
 		eventfd_write((int)vq->callfd, 1);
-- 
1.8.1.4

^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2015-06-11  0:51 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-04-22 16:33 [PATCH] vhost: flush used->idx update before reading avail->flags Huawei Xie
     [not found] ` <1429720392-25345-1-git-send-email-huawei.xie-ral2JQCrhuEAvxtiuMwx3w@public.gmane.org>
2015-04-23 13:57   ` Luke Gorrie
2015-04-24  1:01   ` Linhaifeng
     [not found]     ` <553995DB.4000801-hv44wF8Li93QT0dZR+AlfA@public.gmane.org>
2015-04-24  2:40       ` Xie, Huawei
2015-04-24  7:27       ` Luke Gorrie
2015-06-09  7:04         ` Linhaifeng
2015-06-09  7:45           ` Luke Gorrie
2015-06-09  8:46           ` Michael S. Tsirkin
2015-06-09 13:34             ` Xie, Huawei
2015-06-10  2:36               ` Linhaifeng
2015-06-10  8:30             ` Luke Gorrie
2015-06-11  0:50               ` Linhaifeng
2015-04-29 11:11   ` [PATCH v2] " Huawei Xie
2015-05-13 10:46     ` Thomas Monjalon
2015-05-15 13:43       ` Nikita Kalyazin
2015-05-15 15:23         ` Michael S. Tsirkin
2015-05-18  6:18           ` Nikita Kalyazin

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).