Hi, Thanks everybody for your valuable information.
I am not aware of all these dma related APIs but where to handle these dma stuff? Is it in UBI/UBIFS(at the time of vmalloc allocations)? Or in controller driver? And also is there a way to know the memory allocated using vmalloc is contiguous or not? Based on that I can switch my driver to work in dma or non-dma mode for ubifs use. Thanks, Naga Sureshkumar Relli -----Original Message----- From: Christoph Hellwig [mailto:h...@infradead.org] Sent: Friday, October 21, 2016 6:45 PM To: Richard Weinberger <rich...@nod.at> Cc: Christoph Hellwig <h...@infradead.org>; Naga Sureshkumar Relli <nagas...@xilinx.com>; dw...@infradead.org; computersforpe...@gmail.com; dedeki...@gmail.com; adrian.hun...@intel.com; michal.si...@xilinx.com; Punnaiah Choudary Kalluri <punn...@xilinx.com>; linux-...@lists.infradead.org; linux-kernel@vger.kernel.org; Boris Brezillon <boris.brezil...@free-electrons.com> Subject: Re: UBIFS with dma on 4.6 kernel is not working On Fri, Oct 21, 2016 at 03:07:57PM +0200, Richard Weinberger wrote: > Hmm, thought this is still problematic on VIVT architectures. > Boris tried to provide a solution for that some time ago: > http://www.spinics.net/lists/arm-kernel/msg494025.html Things have been working fine for approx 10 years when using flush_kernel_vmap_range before doing I/O using the physical addresses and then invalidate_kernel_vmap_range when completing the I/O and going back to using the virtual mapping for XFS. Of course all this assumes at least the higher level that did the vm_map_ram operation knows about this dance between virtually mapped and physiscal addresses.