[dpdk-dev] [PATCH v1 5/8] vhost: relax full barriers for desc flags

Joyce Kong joyce.kong at arm.com
Mon Dec 21 16:50:30 CET 2020


Relax the full read barrier to one-way barrier for desc flags in
packed vring.

Signed-off-by: Joyce Kong <joyce.kong at arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang at arm.com>
---
 lib/librte_vhost/virtio_net.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/librte_vhost/virtio_net.c b/lib/librte_vhost/virtio_net.c
index c912ae354..b779034dc 100644
--- a/lib/librte_vhost/virtio_net.c
+++ b/lib/librte_vhost/virtio_net.c
@@ -222,8 +222,9 @@ vhost_flush_dequeue_shadow_packed(struct virtio_net *dev,
 	struct vring_used_elem_packed *used_elem = &vq->shadow_used_packed[0];
 
 	vq->desc_packed[vq->shadow_last_used_idx].id = used_elem->id;
-	rte_smp_wmb();
-	vq->desc_packed[vq->shadow_last_used_idx].flags = used_elem->flags;
+	/* desc flags is the synchronization point for virtio packed vring */
+	__atomic_store_n(&vq->desc_packed[vq->shadow_last_used_idx].flags,
+			 used_elem->flags, __ATOMIC_RELEASE);
 
 	vhost_log_cache_used_vring(dev, vq, vq->shadow_last_used_idx *
 				   sizeof(struct vring_packed_desc),
-- 
2.29.2



More information about the dev mailing list