virtio_ring: use virt_store_mb
We need a full barrier after writing out event index, using virt_store_mb there seems better than open-coding. As usual, we need a wrapper to account for strong barriers. It's tempting to use this in vhost as well, for that, we'll need a variant of smp_store_mb that works on __user pointers. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Acked-by: Peter Zijlstra (Intel) <peterz@infradead.org>
This commit is contained in:
@@ -45,6 +45,17 @@ static inline void virtio_wmb(bool weak_barriers)
|
||||
wmb();
|
||||
}
|
||||
|
||||
static inline void virtio_store_mb(bool weak_barriers,
|
||||
__virtio16 *p, __virtio16 v)
|
||||
{
|
||||
if (weak_barriers) {
|
||||
virt_store_mb(*p, v);
|
||||
} else {
|
||||
WRITE_ONCE(*p, v);
|
||||
mb();
|
||||
}
|
||||
}
|
||||
|
||||
struct virtio_device;
|
||||
struct virtqueue;
|
||||
|
||||
|
Reference in New Issue
Block a user