|
@@ -21,19 +21,20 @@
|
|
* actually quite cheap.
|
|
* actually quite cheap.
|
|
*/
|
|
*/
|
|
|
|
|
|
-#ifdef CONFIG_SMP
|
|
|
|
static inline void virtio_mb(bool weak_barriers)
|
|
static inline void virtio_mb(bool weak_barriers)
|
|
{
|
|
{
|
|
|
|
+#ifdef CONFIG_SMP
|
|
if (weak_barriers)
|
|
if (weak_barriers)
|
|
smp_mb();
|
|
smp_mb();
|
|
else
|
|
else
|
|
|
|
+#endif
|
|
mb();
|
|
mb();
|
|
}
|
|
}
|
|
|
|
|
|
static inline void virtio_rmb(bool weak_barriers)
|
|
static inline void virtio_rmb(bool weak_barriers)
|
|
{
|
|
{
|
|
if (weak_barriers)
|
|
if (weak_barriers)
|
|
- smp_rmb();
|
|
|
|
|
|
+ dma_rmb();
|
|
else
|
|
else
|
|
rmb();
|
|
rmb();
|
|
}
|
|
}
|
|
@@ -41,26 +42,10 @@ static inline void virtio_rmb(bool weak_barriers)
|
|
static inline void virtio_wmb(bool weak_barriers)
|
|
static inline void virtio_wmb(bool weak_barriers)
|
|
{
|
|
{
|
|
if (weak_barriers)
|
|
if (weak_barriers)
|
|
- smp_wmb();
|
|
|
|
|
|
+ dma_wmb();
|
|
else
|
|
else
|
|
wmb();
|
|
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 virtio_device;
|
|
struct virtqueue;
|
|
struct virtqueue;
|