Modern high-performance devices communicate with the CPU through shared memory structures such as DMA Rings.


When one side updates memory, the other side must see the latest value.


On cache-coherent systems this happens automatically. On many ARM platforms it does not.

This post explains what breaks, why it breaks, and how the Linux DMA API...