|
@@ -21,20 +21,19 @@
|
|
|
* 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)
|
|
|
- dma_rmb();
|
|
|
|
|
|
|
+ smp_rmb();
|
|
|
else
|
|
else
|
|
|
rmb();
|
|
rmb();
|
|
|
}
|
|
}
|
|
@@ -42,10 +41,26 @@ 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)
|
|
|
- dma_wmb();
|
|
|
|
|
|
|
+ smp_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;
|