On Tue, Feb 23, 2021 at 3:00 AM Daniel Vetter <[email protected]> wrote:
>
> tldr; DMA buffers aren't normal memory, expecting that you can use
> them like that (like calling get_user_pages works, or that they're
> accounting like any other normal memory) cannot be guaranteed.
>
> Since some userspace only runs on integrated devices, where all
> buffers are actually all resident system memory, there's a huge
> temptation to assume that a struct page is always present and useable
> like for any more pagecache backed mmap. This has the potential to
> result in a uapi nightmare.
>
> To stop this gap require that DMA buffer mmaps are VM_PFNMAP, which
> blocks get_user_pages and all the other struct page based
> infrastructure for everyone. In spirit this is the uapi counterpart to
> the kernel-internal CONFIG_DMABUF_DEBUG.
>
> Motivated by a recent patch which wanted to swich the system dma-buf
> heap to vm_insert_page instead of vm_insert_pfn.
>
> v2:
>
> Jason brought up that we also want to guarantee that all ptes have the
> pte_special flag set, to catch fast get_user_pages (on architectures
> that support this). Allowing VM_MIXEDMAP (like VM_SPECIAL does) would
> still allow vm_insert_page, but limiting to VM_PFNMAP will catch that.
>
> From auditing the various functions to insert pfn pte entires
> (vm_insert_pfn_prot, remap_pfn_range and all it's callers like
> dma_mmap_wc) it looks like VM_PFNMAP is already required anyway, so
> this should be the correct flag to check for.
>
> References:
> https://lore.kernel.org/lkml/cakmk7uhi+mg0z0humnt13qccvuturvjpcr0njrl12k-wbwz...@mail.gmail.com/
> Acked-by: Christian König <[email protected]>
> Cc: Jason Gunthorpe <[email protected]>
> Cc: Suren Baghdasaryan <[email protected]>
> Cc: Matthew Wilcox <[email protected]>
> Cc: John Stultz <[email protected]>
> Signed-off-by: Daniel Vetter <[email protected]>
> Cc: Sumit Semwal <[email protected]>
> Cc: "Christian König" <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> ---
> drivers/dma-buf/dma-buf.c | 15 +++++++++++++--
> 1 file changed, 13 insertions(+), 2 deletions(-)
So I gave this a spin in a few of my environments, and with the
current dmabuf heaps it spews a lot of warnings.
I'm testing some simple fixes to add:
vma->vm_flags |= VM_PFNMAP;
to the dmabuf heap mmap ops, which we might want to queue along side of this.
So assuming those can land together.
Acked-by: John Stultz <[email protected]>
thanks
-john
_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx