The Linux DMA API exists because the address a device uses is not the address the CPU uses, and because on most embedded SoCs the CPU cache is not kept in step with device accesses. Coherent mappings ( dma_alloc_coherent() ) give you memory that both sides can read and write without explicit cac...
Source: [Dev.to](https://dev.to/raghu_bharadwaj_404e60eb0c/the-linux-dma-api-coherent-and-streaming-mappings-explained-1ak9)