On 19/04/2018 19:35, Michael S. Tsirkin wrote: > virtio is using barriers to order memory accesses, thus > dma_wmb/rmb is a good match. > > Build-tested on x86: Before > > [mst@tuck linux]$ size drivers/virtio/virtio_ring.o > text data bss dec hex filename > 11392 820 0 12212 2fb4 drivers/virtio/virtio_ring.o > > After > mst@tuck linux]$ size drivers/virtio/virtio_ring.o > text data bss dec hex filename > 11284 820 0 12104 2f48 drivers/virtio/virtio_ring.o > > Cc: Ohad Ben-Cohen <o...@wizery.com> > Cc: Bjorn Andersson <bjorn.anders...@linaro.org> > Cc: linux-remotep...@vger.kernel.org > Signed-off-by: Michael S. Tsirkin <m...@redhat.com> > --- > > It's good in theory, but could one of RPMSG maintainers please review > and ack this patch? Or even better test it? > > All these barriers are useless on Intel anyway ...
This should be okay, but I wonder if there should be a virtio_wmb(...) or an "if (weak_barriers) wmb()" before the "writel" in vm_notify (drivers/virtio/virtio_mmio.c). Thanks, Paolo > > include/linux/virtio_ring.h | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/include/linux/virtio_ring.h b/include/linux/virtio_ring.h > index bbf3252..fab0213 100644 > --- a/include/linux/virtio_ring.h > +++ b/include/linux/virtio_ring.h > @@ -35,7 +35,7 @@ static inline void virtio_rmb(bool weak_barriers) > if (weak_barriers) > virt_rmb(); > else > - rmb(); > + dma_rmb(); > } > > static inline void virtio_wmb(bool weak_barriers) > @@ -43,7 +43,7 @@ static inline void virtio_wmb(bool weak_barriers) > if (weak_barriers) > virt_wmb(); > else > - wmb(); > + dma_wmb(); > } > > static inline void virtio_store_mb(bool weak_barriers, >