From: Ilya Maximets Date: Fri, 18 Mar 2016 12:23:53 +0000 (+0300) Subject: vhost: use SMP barriers instead of compiler ones X-Git-Tag: spdx-start~7137 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=e994bcda55cc137697393cb8160981ea734687d9;p=dpdk.git vhost: use SMP barriers instead of compiler ones Since commit 4c02e453cc62 ("eal: introduce SMP memory barriers") virtio uses architecture dependent SMP barriers. vHost should use them too. Fixes: 4c02e453cc62 ("eal: introduce SMP memory barriers") Signed-off-by: Ilya Maximets Acked-by: Huawei Xie --- diff --git a/lib/librte_vhost/vhost_rxtx.c b/lib/librte_vhost/vhost_rxtx.c index 7d1224c2dd..750821a446 100644 --- a/lib/librte_vhost/vhost_rxtx.c +++ b/lib/librte_vhost/vhost_rxtx.c @@ -313,7 +313,7 @@ virtio_dev_rx(struct virtio_net *dev, uint16_t queue_id, rte_prefetch0(&vq->desc[desc_indexes[i+1]]); } - rte_compiler_barrier(); + rte_smp_wmb(); /* Wait until it's our turn to add our buffer to the used ring. */ while (unlikely(vq->last_used_idx != res_start_idx)) @@ -563,7 +563,7 @@ virtio_dev_merge_rx(struct virtio_net *dev, uint16_t queue_id, nr_used = copy_mbuf_to_desc_mergeable(dev, vq, start, end, pkts[pkt_idx]); - rte_compiler_barrier(); + rte_smp_wmb(); /* * Wait until it's our turn to add our buffer @@ -921,7 +921,8 @@ rte_vhost_dequeue_burst(struct virtio_net *dev, uint16_t queue_id, sizeof(vq->used->ring[used_idx])); } - rte_compiler_barrier(); + rte_smp_wmb(); + rte_smp_rmb(); vq->used->idx += i; vhost_log_used_vring(dev, vq, offsetof(struct vring_used, idx), sizeof(vq->used->idx));