The Linux DMA mapping API exists to solve two problems for driver authors: translating a CPU buffer into a bus address the device can use, and inserting the cache maintenance operations needed on non-coherent architectures. Coherent mappings (dma_alloc_coherent) are for small, long-lived control structures accessed by both CPU and device without...