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@xxxxxxxxxxxxxxxxxxxxxxxxxx. 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.