Re: [PATCH] drm/xen-front: Make shmem backed display buffer coherent

From: Oleksandr Andrushchenko
Date: Fri Dec 21 2018 - 04:16:51 EST


On 12/20/18 8:38 PM, Christoph Hellwig wrote:
On Thu, Dec 20, 2018 at 07:35:15PM +0100, Daniel Vetter wrote:
Err, with streaming DMA buffer sharing is trivial. The coherent DMA
allocator is what causes all kinds of horrible hacks that can't actually
work on various platforms.
Hm, I thought the streaming dma api is the one that causes bounce
buffers and all that fun. If you're unlucky at least.
Yes it may. But even if that happens everything will actually work,
just slower. While the dma coherent API is simply broken.

But if you don't want bounce buffering you need to use the dma
noncoherent allocator as proposed here:

https://lists.linuxfoundation.org/pipermail/iommu/2018-December/031982.html

which combines allocating memory that doesn't need to be bounce
buffered with a sharing scheme that can actually work.
So, the bottom line will be: I can use DMA API for what I need, but:
1. I need to remove GFP_USER
2. No need for DMA32 (so no chance for bouncing to step in)
3. I may need to check if mapping and unmapping of the buffer
at once will also help, e.g. no need to have the buffer mapped until
it is destroyed
Did I get it all right?

Thank you,
Oleksandr