[PATCH] virtio_ring: Update weak barriers to use dma_wmb/rmb

From: Alexander Duyck
Date: Tue Apr 07 2015 - 20:47:53 EST

This change makes it so that instead of using smp_wmb/rmb which varies
depending on the kernel configuration we can can use dma_wmb/rmb which for
most architectures should be equal to or slightly more strict than

The advantage to this is that these barriers are available to uniprocessor
builds as well so the performance should improve under such a

Signed-off-by: Alexander Duyck <alexander.h.duyck@xxxxxxxxxx>
include/linux/virtio_ring.h | 23 ++++-------------------
1 file changed, 4 insertions(+), 19 deletions(-)

diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
index 67e06fe18c03..8e50888a6d59 100644
--- a/include/linux/virtio_ring.h
+++ b/include/linux/virtio_ring.h
@@ -21,19 +21,20 @@
* actually quite cheap.

-#ifdef CONFIG_SMP
static inline void virtio_mb(bool weak_barriers)
+#ifdef CONFIG_SMP
if (weak_barriers)

static inline void virtio_rmb(bool weak_barriers)
if (weak_barriers)
- smp_rmb();
+ dma_rmb();
@@ -41,26 +42,10 @@ static inline void virtio_rmb(bool weak_barriers)
static inline void virtio_wmb(bool weak_barriers)
if (weak_barriers)
- smp_wmb();
+ dma_wmb();
-static inline void virtio_mb(bool weak_barriers)
- mb();
-static inline void virtio_rmb(bool weak_barriers)
- rmb();
-static inline void virtio_wmb(bool weak_barriers)
- wmb();

struct virtio_device;
struct virtqueue;

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/