On Mon, Jun 07, 2021 at 11:21:20PM +0800, Tianyu Lan wrote: >> dma_map_single can only be used on page baked memory, and if this is >> using page backed memory you wouldn't need to do thee phys_to_virt >> tricks. Can someone explain the mess here in more detail? > > Sorry. Could you elaborate the issue? These pages in the pb array are not > allocated by DMA API and using dma_map_single() here is to map these pages' > address to bounce buffer physical address. dma_map_single just calls dma_map_page using virt_to_page. So this can't work on addresses not in the kernel linear mapping.