On Tue, Jan 15, 2019 at 03:24:55PM +0100, Christian König wrote:
Yeah, indeed. Bounce buffers are an absolute no-go for GPUs.
If the DMA API finds that a piece of memory is not directly accessible by the GPU we need to return an error and not try to use bounce buffers behind the surface.
That is something which always annoyed me with the DMA API, which is otherwise rather cleanly defined.
That is exactly what I want to fix with my series to make DMA_ATTR_NON_CONSISTENT more useful and always available:
https://lists.linuxfoundation.org/pipermail/iommu/2018-December/031985.html
With that you allocate the memory using dma_alloc_attrs with DMA_ATTR_NON_CONSISTENT, and use dma_sync_single_* to transfer ownership to the cpu and back to the device, with a gurantee that there won't be any bouncing. So far the interest by the parties that requested the feature has been rather lacklustre, though.