Thread (66 messages) flat view 66 messages, 12 authors, 2011-07-26

[Linaro-mm-sig] [PATCH/RFC 0/8] ARM: DMA-mappingframework redesign

From: arnd@arndb.de (Arnd Bergmann)
Date: 2011-06-24 15:20:31
Also in: linux-arch, linux-mm

On Wednesday 22 June 2011, Jordan Crouse wrote:
quoted
quoted
I have a query in similar lines, but related to user virtual address
space. Is it feasible to extend these DMA interfaces(and IOMMU), to map
a user allocated buffer into the hardware?
This can be done with the current API, although it may not look so
straightforward. You just need to create a scatter list of user pages
(these can be gathered with get_user_pages function) and use dma_map_sg()
function. If the dma-mapping support iommu, it can map all these pages
into a single contiguous buffer on device (DMA) address space.

Some additional 'magic' might be required to get access to pages that are
mapped with pure PFN (VM_PFNMAP flag), but imho it still can be done.

I will try to implement this feature in videobuf2-dma-config allocator
together with the next version of my patches for dma-mapping&iommu.
With luck DMA_ATTRIB_NO_KERNEL_MAPPING should remove any lingering arguments
for trying to map user pages. Given that our ultimate goal here is buffer
sharing, user allocated pages have limited value and appeal. If anything, I
vote that this be a far lower priority compared to the rest of the win you
have here.
I agree. Mapping user-allocated buffers is extremely hard to get right
when there are extra constraints. If it doesn't work already for some driver,
I wouldn't put too much effort into making it work for more special cases.

	Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help