]> git.karo-electronics.de Git - karo-tx-linux.git/commit
cma: add placement specifier for "cma=" kernel parameter
authorAkinobu Mita <akinobu.mita@gmail.com>
Thu, 22 May 2014 00:42:47 +0000 (10:42 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Thu, 22 May 2014 00:42:47 +0000 (10:42 +1000)
commit36c9ad433971465387f92c0c94b6b4b5b73b2025
treefb064f4c9c44406bbee15ad54e16e99ba1a642df
parenta8b9543183c69dc5eeac7bf775840ffde8ac7971
cma: add placement specifier for "cma=" kernel parameter

Currently, "cma=" kernel parameter is used to specify the size of CMA, but
we can't specify where it is located.  We want to locate CMA below 4GB for
devices only supporting 32-bit addressing on 64-bit systems without iommu.

This enables to specify the placement of CMA by extending "cma=" kernel
parameter.

Examples:
1. locate 64MB CMA below 4GB by "cma=64M@0-4G"
2. locate 64MB CMA exact at 512MB by "cma=64M@512M"

Note that the DMA contiguous memory allocator on x86 assumes that
page_address() works for the pages to allocate.  So this change requires
to limit end address of contiguous memory area upto max_pfn_mapped to
prevent from locating it on highmem area by the argument of
dma_contiguous_reserve().

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: Don Dutile <ddutile@redhat.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Yinghai Lu <yinghai@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Documentation/kernel-parameters.txt
arch/x86/kernel/setup.c
drivers/base/dma-contiguous.c
include/linux/dma-contiguous.h