virtio_ring: Update weak barriers to use dma_wmb/rmb
authorAlexander Duyck <alexander.h.duyck@redhat.com>
Mon, 13 Apr 2015 11:33:49 +0000 (21:03 +0930)
committerRusty Russell <rusty@rustcorp.com.au>
Mon, 13 Apr 2015 11:34:16 +0000 (21:04 +0930)
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
smp_wmb/rmb.

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

Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
include/linux/virtio_ring.h

index 67e06fe18c03b6814e217f05134cdb68a5df13bc..8e50888a6d595af06221ee43dfc2d0e4aa91c18e 100644 (file)
  * actually quite cheap.
  */
 
-#ifdef CONFIG_SMP
 static inline void virtio_mb(bool weak_barriers)
 {
+#ifdef CONFIG_SMP
        if (weak_barriers)
                smp_mb();
        else
+#endif
                mb();
 }
 
 static inline void virtio_rmb(bool weak_barriers)
 {
        if (weak_barriers)
-               smp_rmb();
+               dma_rmb();
        else
                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();
        else
                wmb();
 }
-#else
-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();
-}
-#endif
 
 struct virtio_device;
 struct virtqueue;