> + dma_unmap_page_attrs(device, buf->dma, PAGE_SIZE, > + DMA_BIDIRECTIONAL, > + DMA_ATTR_SKIP_CPU_SYNC); > + addr = dma_map_page_attrs(device, page, 0, PAGE_SIZE, > + DMA_BIDIRECTIONAL, > + DMA_ATTR_SKIP_CPU_SYNC); You can't just magically skip cpu syncs. The flag is only valid for mappings of already mapped memory when following a very careful protocol. I can't see any indications of that beeing true here, but maybe I'm just missing something.