| Subject | Re: [PATCH v2 32/32] virtio_ring: use virt_store_mb | From | Sergei Shtylyov <> | Date | Fri, 1 Jan 2016 20:23:46 +0300 |
| |
Hello.
On 12/31/2015 10:09 PM, Michael S. Tsirkin wrote:
> 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> > --- > include/linux/virtio_ring.h | 12 ++++++++++++ > drivers/virtio/virtio_ring.c | 15 +++++++++------ > 2 files changed, 21 insertions(+), 6 deletions(-) > > diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h > index f3fa55b..3a74d91 100644 > --- a/include/linux/virtio_ring.h > +++ b/include/linux/virtio_ring.h > @@ -45,6 +45,18 @@ 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 > + {
The kernel coding style dictates:
if (weak_barriers) { virt_store_mb(*p, v); } else {
> + WRITE_ONCE(*p, v); > + mb(); > + } > +} > + [...]
MBR, Sergei
|