Thread (10 messages) 10 messages, 3 authors, 2014-08-27

[PATCHv7 3/5] common: dma-mapping: Introduce common remapping functions

From: Mark Salter <hidden>
Date: 2014-08-27 21:02:18
Also in: linux-mm, linux-next, lkml

On Tue, 2014-08-26 at 09:58 -0700, Laura Abbott wrote:
On 8/26/2014 3:05 AM, James Hogan wrote:
quoted
On 12 August 2014 00:40, Laura Abbott [off-list ref] wrote:
quoted
For architectures without coherent DMA, memory for DMA may
need to be remapped with coherent attributes. Factor out
the the remapping code from arm and put it in a
common location to reduce code duplication.

As part of this, the arm APIs are now migrated away from
ioremap_page_range to the common APIs which use map_vm_area for remapping.
This should be an equivalent change and using map_vm_area is more
correct as ioremap_page_range is intended to bring in io addresses
into the cpu space and not regular kernel managed memory.

Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Laura Abbott <redacted>
This commit in linux-next () breaks the build for metag:

drivers/base/dma-mapping.c: In function ?dma_common_contiguous_remap?:
drivers/base/dma-mapping.c:294: error: implicit declaration of
function ?dma_common_pages_remap?
drivers/base/dma-mapping.c:294: warning: assignment makes pointer from
integer without a cast
drivers/base/dma-mapping.c: At top level:
drivers/base/dma-mapping.c:308: error: conflicting types for
?dma_common_pages_remap?
drivers/base/dma-mapping.c:294: error: previous implicit declaration
of ?dma_common_pages_remap? was here

Looks like metag isn't alone either:

$ git grep -L dma-mapping-common arch/*/include/asm/dma-mapping.h
arch/arc/include/asm/dma-mapping.h
arch/avr32/include/asm/dma-mapping.h
arch/blackfin/include/asm/dma-mapping.h
arch/c6x/include/asm/dma-mapping.h
arch/cris/include/asm/dma-mapping.h
arch/frv/include/asm/dma-mapping.h
arch/m68k/include/asm/dma-mapping.h
arch/metag/include/asm/dma-mapping.h
arch/mn10300/include/asm/dma-mapping.h
arch/parisc/include/asm/dma-mapping.h
arch/xtensa/include/asm/dma-mapping.h

I've checked a couple of these arches (blackfin, xtensa) which don't
include dma-mapping-common.h and their builds seem to be broken too.

Cheers
James
Thanks for the report. Would you mind giving the following patch
a test (this is theoretical only but I think it should work)
There's a further problem with c6x (no  MMU):

drivers/built-in.o: In function `dma_common_pages_remap':
(.text+0x220c4): undefined reference to `get_vm_area_caller'
drivers/built-in.o: In function `dma_common_pages_remap':
(.text+0x22108): undefined reference to `map_vm_area'
drivers/built-in.o: In function `dma_common_free_remap':
(.text+0x22278): undefined reference to `find_vm_area'
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help