linux/drivers
Akinobu Mita 5ea3b1b2f8 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>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2014-06-04 16:53:57 -07:00
..
accessibility
acpi ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
amba
ata
atm
auxdisplay
base cma: add placement specifier for "cma=" kernel parameter 2014-06-04 16:53:57 -07:00
bcma
block
bluetooth
bus
cdrom
char ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
clk DeviceTree for 3.16: 2014-06-04 10:02:38 -07:00
clocksource DeviceTree for 3.16: 2014-06-04 10:02:38 -07:00
connector
cpufreq ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
cpuidle ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
crypto
dca
devfreq
dio
dma
edac
eisa
extcon
firewire sound updates for 3.16-rc1 2014-06-04 09:08:25 -07:00
firmware
fmc
gpio
gpu ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
hid Merge branches 'for-3.16/i2c-hid', 'for-3.16/rmi4', 'for-3.16/sony' and 'for-3.16/thingm' into for-linus 2014-06-04 13:09:43 +02:00
hsi
hv
hwmon
hwspinlock
i2c
ide
idle
iio
infiniband
input
iommu intel-iommu: integrate DMA CMA 2014-06-04 16:53:57 -07:00
ipack
irqchip DeviceTree for 3.16: 2014-06-04 10:02:38 -07:00
isdn
leds Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/hid into next 2014-06-04 08:52:36 -07:00
lguest
macintosh
mailbox
mcb
md
media
memory
memstick
message
mfd sound updates for 3.16-rc1 2014-06-04 09:08:25 -07:00
misc Merge branch 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into next 2014-06-03 15:48:23 -07:00
mmc
mtd
net ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
nfc
ntb
nubus
of DeviceTree for 3.16: 2014-06-04 10:02:38 -07:00
oprofile
parisc
parport
pci Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial into next 2014-06-04 08:50:34 -07:00
pcmcia
phy
pinctrl
platform ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
pnp Merge branches 'pnp', 'powercap', 'pm-runtime' and 'pm-opp' 2014-06-03 23:13:00 +02:00
power ACPI and power management updates for 3.16-rc1 2014-06-04 08:57:16 -07:00
powercap
pps
ps3
ptp
pwm
rapidio
regulator
remoteproc
reset
rpmsg
rtc
s390 At over 200 commits, covering almost all supported architectures, this 2014-06-04 08:47:12 -07:00
sbus
scsi Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial into next 2014-06-04 08:50:34 -07:00
sfi
sh
sn
soc
spi
spmi
ssb
staging Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial into next 2014-06-04 08:50:34 -07:00
target
tc
thermal
tty DeviceTree for 3.16: 2014-06-04 10:02:38 -07:00
uio
usb
uwb
vfio
vhost
video fbdev changes for 3.16 (omap) 2014-06-04 09:07:08 -07:00
virt
virtio
vlynq
vme
w1
watchdog
xen
zorro
Kconfig
Makefile