On Wed, Jun 26, 2019 at 11:21 PM Christoph Hellwig <hch@xxxxxxxxxxxxx> wrote:
On Wed, Jun 26, 2019 at 10:12:45PM +0530, Pankaj Suryawanshi wrote:
[CC: linux kernel and Vlastimil Babka]
The right list is the list for the DMA mapping subsystem, which is
iommu@xxxxxxxxxxxxxxxxxxxxxxxxxxx I've also added that.
I am writing driver in which I used DMA_ATTR_NO_KERNEL_MAPPING attribute
for cma allocation using dma_alloc_attr(), as per kernel docs
https://www.kernel.org/doc/Documentation/DMA-attributes.txt buffers
allocated with this attribute can be only passed to user space by calling
dma_mmap_attrs().
how can I mapped in kernel space (after dma_alloc_attr with
DMA_ATTR_NO_KERNEL_MAPPING ) ?
You can't. And that is the whole point of that API.
1. We can again mapped in kernel space using dma_remap() api , because
when we are using DMA_ATTR_NO_KERNEL_MAPPING for dma_alloc_attr it
returns the page as virtual address(in case of CMA) so we can mapped
it again using dma_remap().
2. We can mapped in kernel space using vmap() as used for ion-cma
https://github.com/torvalds/linux/tree/master/drivers/staging/android/ion
as used in function ion_heap_map_kernel().
Please let me know if i am missing anything.