Messages in this thread | | | Date | Wed, 2 May 2018 11:16:35 +0200 | From | Boris Brezillon <> | Subject | Re: [PATCH v2] mtd: onenand: omap2: Disable DMA for HIGHMEM buffers |
| |
On Wed, 2 May 2018 10:06:36 +0200 Ladislav Michl <ladis@linux-mips.org> wrote:
> Hi Boris, > > (and apologies for delay) > > On Fri, Apr 20, 2018 at 10:01:34PM +0200, Boris Brezillon wrote: > > Hi Ladislav, > > > > On Mon, 16 Apr 2018 08:52:59 +0200 > > Ladislav Michl <ladis@linux-mips.org> wrote: > > > > > dma_map_single doesn't get the proper DMA address for vmalloced area, > > > > That's not true, it returns the right DMA (physical) address, it's just > > that: > > To be honest I used log message from commit dcf08227e964 which is dealing > with the same issue.
Okay, looks like I was wrong. The problem is caused by the virt_to_page() call done in dma_map_single_attrs() which expects a valid virtual address (one that is present in the identity mapping). If you pass a vmalloc address to it, the conversion is broken and that's probably why you end up with a NULL pointer exception.
Maybe you should just say that dma_map_single() does not work for vmalloc-ed buffers instead of saying that it does not get the right DMA address.
| |