Re: LKMM: Read dependencies of writes ordered by dma_wmb()?

From: Will Deacon
Date: Tue Aug 17 2021 - 08:28:29 EST


Just on this bit...

On Mon, Aug 16, 2021 at 01:50:57PM -0700, Paul E. McKenney wrote:
> 5. The dma_mb(), dma_rmb(), and dma_wmb() appear to be specific
> to ARMv8.

These are useful on other architectures too! IIRC, they were added by x86 in
the first place. They're designed to be used with dma_alloc_coherent()
allocations where you're sharing something like a ring buffer with a device
and they guarantee accesses won't be reordered before they become visible
to the device. They _also_ provide the same ordering to other CPUs.

I gave a talk at LPC about some of this, which might help (or might make
things worse...):

https://www.youtube.com/watch?v=i6DayghhA8Q

Ignore the bits about mmiowb() as we got rid of that.

Will