Messages in this thread |  | | Subject | Re: UBIFS with dma on 4.6 kernel is not working | From | Richard Weinberger <> | Date | Fri, 21 Oct 2016 15:07:57 +0200 |
| |
Christoph,
On 21.10.2016 14:53, Christoph Hellwig wrote: > On Fri, Oct 21, 2016 at 11:29:16AM +0200, Richard Weinberger wrote: >> DMA to vmalloced memory not good, it may work by chance if you transfer >> less than PAGE_SIZE. >> Especially on ARM. > > DMA to vmalloc'ed or vmap memory is perfectly fine, you just have to be > very careful. > > I would suggest to not expose the vmalloc address to the lower layers > that do DMA, but instead expose the pages, either as an array or > scatterlist. Either allocate the pages using the normal page allocator > and then use vm_map_ram to generate a virtual address for them (that > is what XFS does for it's large metadata objects for example). Or if > you can't do that iterate over the vmalloc address in page size chunks > and use vmalloc_to_page (we still also do that for one piece of legacy > cruft in XFS, but I'd rather avoid that for new designs). >
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
Thanks, //richard
|  |