generic/4.4: backport virtio_ring patch for reverting weak barriers patch
[openwrt-github/.git] / target / linux / generic / patches-4.4 / 150-virtio-revert_dma_wmb_rmb_weak_barriers.patch
1 diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h
2 index 8e50888..67e06fe 100644
3 --- a/include/linux/virtio_ring.h
4 +++ b/include/linux/virtio_ring.h
5 @@ -21,20 +21,19 @@
6   * actually quite cheap.
7   */
8  
9 +#ifdef CONFIG_SMP
10  static inline void virtio_mb(bool weak_barriers)
11  {
12 -#ifdef CONFIG_SMP
13         if (weak_barriers)
14                 smp_mb();
15         else
16 -#endif
17                 mb();
18  }
19  
20  static inline void virtio_rmb(bool weak_barriers)
21  {
22         if (weak_barriers)
23 -               dma_rmb();
24 +               smp_rmb();
25         else
26                 rmb();
27  }
28 @@ -42,10 +41,26 @@ static inline void virtio_rmb(bool weak_barriers)
29  static inline void virtio_wmb(bool weak_barriers)
30  {
31         if (weak_barriers)
32 -               dma_wmb();
33 +               smp_wmb();
34         else
35                 wmb();
36  }
37 +#else
38 +static inline void virtio_mb(bool weak_barriers)
39 +{
40 +       mb();
41 +}
42 +
43 +static inline void virtio_rmb(bool weak_barriers)
44 +{
45 +       rmb();
46 +}
47 +
48 +static inline void virtio_wmb(bool weak_barriers)
49 +{
50 +       wmb();
51 +}
52 +#endif
53  
54  struct virtio_device;
55  struct virtqueue;