Linus Torvalds
d484864dd9
Merge branch 'for-linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping
...
Pull CMA and ARM DMA-mapping updates from Marek Szyprowski:
"These patches contain two major updates for DMA mapping subsystem
(mainly for ARM architecture). First one is Contiguous Memory
Allocator (CMA) which makes it possible for device drivers to allocate
big contiguous chunks of memory after the system has booted.
The main difference from the similar frameworks is the fact that CMA
allows to transparently reuse the memory region reserved for the big
chunk allocation as a system memory, so no memory is wasted when no
big chunk is allocated. Once the alloc request is issued, the
framework migrates system pages to create space for the required big
chunk of physically contiguous memory.
For more information one can refer to nice LWN articles:
- 'A reworked contiguous memory allocator':
http://lwn.net/Articles/447405/
- 'CMA and ARM':
http://lwn.net/Articles/450286/
- 'A deep dive into CMA':
http://lwn.net/Articles/486301/
- and the following thread with the patches and links to all previous
versions:
https://lkml.org/lkml/2012/4/3/204
The main client for this new framework is ARM DMA-mapping subsystem.
The second part provides a complete redesign in ARM DMA-mapping
subsystem. The core implementation has been changed to use common
struct dma_map_ops based infrastructure with the recent updates for
new dma attributes merged in v3.4-rc2. This allows to use more than
one implementation of dma-mapping calls and change/select them on the
struct device basis. The first client of this new infractructure is
dmabounce implementation which has been completely cut out of the
core, common code.
The last patch of this redesign update introduces a new, experimental
implementation of dma-mapping calls on top of generic IOMMU framework.
This lets ARM sub-platform to transparently use IOMMU for DMA-mapping
calls if one provides required IOMMU hardware.
For more information please refer to the following thread:
http://www.spinics.net/lists/arm-kernel/msg175729.html
The last patch merges changes from both updates and provides a
resolution for the conflicts which cannot be avoided when patches have
been applied on the same files (mainly arch/arm/mm/dma-mapping.c)."
Acked by Andrew Morton <akpm@linux-foundation.org>:
"Yup, this one please. It's had much work, plenty of review and I
think even Russell is happy with it."
* 'for-linus' of git://git.linaro.org/people/mszyprowski/linux-dma-mapping: (28 commits)
ARM: dma-mapping: use PMD size for section unmap
cma: fix migration mode
ARM: integrate CMA with DMA-mapping subsystem
X86: integrate CMA with DMA-mapping subsystem
drivers: add Contiguous Memory Allocator
mm: trigger page reclaim in alloc_contig_range() to stabilise watermarks
mm: extract reclaim code from __alloc_pages_direct_reclaim()
mm: Serialize access to min_free_kbytes
mm: page_isolation: MIGRATE_CMA isolation functions added
mm: mmzone: MIGRATE_CMA migration type added
mm: page_alloc: change fallbacks array handling
mm: page_alloc: introduce alloc_contig_range()
mm: compaction: export some of the functions
mm: compaction: introduce isolate_freepages_range()
mm: compaction: introduce map_pages()
mm: compaction: introduce isolate_migratepages_range()
mm: page_alloc: remove trailing whitespace
ARM: dma-mapping: add support for IOMMU mapper
ARM: dma-mapping: use alloc, mmap, free from dma_ops
ARM: dma-mapping: remove redundant code and do the cleanup
...
Conflicts:
arch/x86/include/asm/dma-mapping.h
2012-05-25 09:18:59 -07:00
..
bitops
Add #includes needed to permit the removal of asm/system.h
2012-03-28 18:30:03 +01:00
4level-fixup.h
mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
2009-07-27 12:10:38 -07:00
atomic-long.h
asm-generic: merge branch 'master' of torvalds/linux-2.6
2009-06-12 11:32:58 +02:00
atomic.h
Remove all #inclusions of asm/system.h
2012-03-28 18:30:03 +01:00
atomic64.h
lib: Provide generic atomic64_t implementation
2009-06-15 13:27:38 +10:00
audit_change_attr.h
audit: support the "standard" <asm-generic/unistd.h>
2011-05-04 14:41:28 -04:00
audit_dir_write.h
audit: support the "standard" <asm-generic/unistd.h>
2011-05-04 14:41:28 -04:00
audit_read.h
audit: support the "standard" <asm-generic/unistd.h>
2011-05-04 14:41:28 -04:00
audit_signal.h
audit_write.h
audit: support the "standard" <asm-generic/unistd.h>
2011-05-04 14:41:28 -04:00
auxvec.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
barrier.h
Create asm-generic/barrier.h
2012-03-28 18:30:03 +01:00
bitops.h
bitops: remove minix bitops from asm/bitops.h
2011-03-23 19:46:22 -07:00
bitsperlong.h
asm-generic: introduce asm/bitsperlong.h
2009-06-11 21:02:14 +02:00
bug.h
consolidate WARN_...ONCE() static variables
2012-03-23 16:58:31 -07:00
bugs.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
cache.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
cacheflush.h
asm-generic/cacheflush.h: flush icache when copying to user pages
2011-05-25 08:39:37 -07:00
checksum.h
Add extra arch overrides to asm-generic/checksum.h
2011-11-01 07:34:21 -07:00
cmpxchg-local.h
Fix IRQ flag handling naming
2010-10-07 14:08:55 +01:00
cmpxchg.h
asm-generic: add linux/types.h to cmpxchg.h
2012-04-02 14:41:27 -07:00
cputime.h
Merge branch 'sched-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2012-01-06 08:44:54 -08:00
current.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
delay.h
asm-generic: delay.h fix udelay and ndelay for 8 bit args
2011-07-22 18:45:33 +02:00
device.h
Driver Core: Add platform device arch data V3
2009-07-22 00:28:38 +02:00
div64.h
dma-coherent.h
common: add dma_mmap_from_coherent() function
2012-05-21 15:06:09 +02:00
dma-contiguous.h
drivers: add Contiguous Memory Allocator
2012-05-21 15:09:37 +02:00
dma-mapping-broken.h
dma-mapping: remove dma_is_consistent API
2010-08-11 08:59:21 -07:00
dma-mapping-common.h
BUG: headers with BUG/BUG_ON etc. need linux/bug.h
2012-03-04 17:54:34 -05:00
dma.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
emergency-restart.h
errno-base.h
errno.h
mm: make __get_user_pages return -EHWPOISON for HWPOISON page optionally
2011-03-17 13:08:27 -03:00
exec.h
Split arch_align_stack() out from asm-generic/system.h
2012-03-28 18:30:03 +01:00
fb.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
fcntl.h
locks: move F_INPROGRESS from fl_type to fl_flags field
2011-08-19 13:25:34 -04:00
ftrace.h
asm-generic headers: add ftrace.h
2011-03-17 09:19:04 +08:00
futex.h
futex: Sanitize futex ops argument types
2011-03-11 12:23:31 +01:00
getorder.h
bitops: Add missing parentheses to new get_order macro
2012-02-24 10:39:27 -08:00
gpio.h
gpiolib: Remove 'const' from data argument of gpiochip_find()
2012-05-18 23:01:05 -06:00
hardirq.h
Fix IRQ flag handling naming
2010-10-07 14:08:55 +01:00
hw_irq.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
ide_iops.h
int-l64.h
asm-generic: introduce asm/bitsperlong.h
2009-06-11 21:02:14 +02:00
int-ll64.h
asm-generic: introduce asm/bitsperlong.h
2009-06-11 21:02:14 +02:00
io-64-nonatomic-hi-lo.h
asm-generic: architecture independent readq/writeq for 32bit environment
2012-02-21 16:47:28 -08:00
io-64-nonatomic-lo-hi.h
asm-generic: architecture independent readq/writeq for 32bit environment
2012-02-21 16:47:28 -08:00
io.h
lib: use generic pci_iomap on all architectures
2012-01-10 18:04:27 -08:00
ioctl.h
ioctls.h
tty: add TIOCVHANGUP to allow clean tty shutdown of all ttys
2011-02-17 14:16:30 -08:00
iomap.h
[PARISC] fix compile break caused by iomap: make IOPORT/PCI mapping functions conditional
2012-02-27 09:43:30 -06:00
ipcbuf.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
irq.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
irq_regs.h
core: Replace __get_cpu_var with __this_cpu_read if not used for an address.
2010-12-17 15:07:19 +01:00
irqflags.h
Fix IRQ flag handling naming
2010-10-07 14:08:55 +01:00
Kbuild
include: replace unifdef-y with header-y
2010-08-14 22:26:51 +02:00
Kbuild.asm
include: replace unifdef-y with header-y
2010-08-14 22:26:51 +02:00
kdebug.h
asm-generic: kdebug.h: Checkpatch cleanup
2010-10-09 21:51:44 +02:00
kmap_types.h
include/asm-generic/kmap_types.h: add helpful reminder
2010-05-25 08:07:03 -07:00
kvm_para.h
KVM: make asm-generic/kvm_para.h have an ifdef __KERNEL__ block
2012-05-21 17:47:52 +03:00
libata-portmap.h
linkage.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
local.h
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
local64.h
atomic: use <linux/atomic.h>
2011-07-26 16:49:47 -07:00
memory_model.h
mm: fix __page_to_pfn for a const struct page argument
2011-08-17 13:00:20 -07:00
mm_hooks.h
mman-common.h
coredump: add VM_NODUMP, MADV_NODUMP, MADV_CLEAR_NODUMP
2012-03-23 16:58:42 -07:00
mman.h
mm: add MAP_HUGETLB for mmaping pseudo-anonymous huge page regions
2009-09-22 07:17:41 -07:00
mmu.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
mmu_context.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
module.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
msgbuf.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
mutex-dec.h
mutex-null.h
mutex-xchg.h
mutex.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
page.h
The following changes since commit 3ee72ca992
2012-01-10 17:39:40 -08:00
param.h
UAPI: Rearrange definition of HZ in asm-generic/param.h
2011-12-13 09:26:45 +00:00
parport.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
pci-bridge.h
PCI: work around Stratus ftServer broken PCIe hierarchy
2012-04-30 15:21:02 -06:00
pci-dma-compat.h
dma-mapping: pci: move pci_set_dma_mask and pci_set_consistent_dma_mask to pci-dma-compat.h
2010-03-12 15:52:42 -08:00
pci.h
PCI: collapse pcibios_resource_to_bus
2012-02-23 20:19:04 -07:00
pci_iomap.h
[PARISC] fix compile break caused by iomap: make IOPORT/PCI mapping functions conditional
2012-02-27 09:43:30 -06:00
percpu.h
percpu: Optimize __get_cpu_var()
2010-09-10 10:56:51 +02:00
pgalloc.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
pgtable-nopmd.h
mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
2009-07-27 12:10:38 -07:00
pgtable-nopud.h
mm: Pass virtual address to [__]p{te,ud,md}_free_tlb()
2009-07-27 12:10:38 -07:00
pgtable.h
The following text was taken from the original review request:
2012-03-24 10:08:39 -07:00
poll.h
epoll: introduce POLLFREE to flush ->signalfd_wqh before kfree()
2012-02-24 11:42:50 -08:00
posix_types.h
posix_types: Introduce __kernel_[u]long_t
2012-02-20 12:48:47 -08:00
ptrace.h
asm-generic/ptrace.h: start a common low level ptrace helper
2011-05-26 17:12:36 -07:00
resource.h
ulimit: raise default hard ulimit on number of files to 4096
2011-05-25 08:39:43 -07:00
rtc.h
asm-generic: make get_rtc_time overridable
2009-06-11 21:02:18 +02:00
rwsem.h
Hexagon: Add locking types and functions
2011-11-01 07:34:20 -07:00
scatterlist.h
asm-generic: remove ARCH_HAS_SG_CHAIN in scatterlist.h
2010-05-27 09:12:54 -07:00
sections.h
x86: Separate out entry text section
2011-03-08 17:22:11 +01:00
segment.h
asm-generic: add generic NOMMU versions of some headers
2009-06-11 21:02:50 +02:00
sembuf.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
serial.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
setup.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
shmbuf.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
shmparam.h
asm-generic: add generic sysv ipc headers
2009-06-11 21:02:15 +02:00
siginfo.h
Linux 3.4-rc5
2012-05-04 12:46:40 +10:00
signal-defs.h
signal.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
sizes.h
asm-generic headers: add sizes.h
2011-03-17 09:19:04 +08:00
socket.h
net: Add framework to allow sending packets with customized CRC.
2012-02-24 01:37:35 -08:00
sockios.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
spinlock.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
stat.h
asm-generic/stat.h: support 64-bit file time_t for stat()
2010-11-01 15:31:29 -04:00
statfs.h
asm-generic: Use __BITS_PER_LONG in statfs.h
2012-04-30 12:55:15 -07:00
string.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
swab.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
switch_to.h
Split the switch_to() wrapper out of asm-generic/system.h
2012-03-28 18:30:03 +01:00
syscall.h
asm/syscall.h: add syscall_get_arch
2012-04-14 11:13:19 +10:00
syscalls.h
Fix the declaration of sys_execve() in asm-generic/syscalls.h
2010-08-18 12:12:38 -07:00
termbits.h
tty: Add EXTPROC support for LINEMODE
2010-08-10 13:47:39 -07:00
termios-base.h
termios.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
timex.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
tlb.h
thp: add tlb_remove_pmd_tlb_entry
2012-01-12 20:13:08 -08:00
tlbflush.h
BUG: headers with BUG/BUG_ON etc. need linux/bug.h
2012-03-04 17:54:34 -05:00
topology.h
topology: alternate fix for ia64 tiger_defconfig build breakage
2010-08-09 20:44:57 -07:00
types.h
consolidate umode_t declarations
2012-01-03 22:55:17 -05:00
uaccess-unaligned.h
asm-generic: rename page.h and uaccess.h
2009-06-11 21:02:17 +02:00
uaccess.h
fix default __strnlen_user macro
2011-10-06 19:47:12 -04:00
ucontext.h
asm-generic: add generic ABI headers
2009-06-11 21:02:15 +02:00
unaligned.h
asm-generic: add generic versions of common headers
2009-06-11 21:02:37 +02:00
unistd.h
compat: use sys_sendfile64() implementation for sendfile syscall
2012-03-27 13:36:57 -04:00
user.h
asm-generic/user.h: Fix spelling in comment
2011-03-01 15:49:39 +01:00
vga.h
asm-generic: add legacy I/O header files
2009-06-11 21:02:42 +02:00
vmlinux.lds.h
ftrace: Sort all function addresses, not just per page
2012-05-16 19:58:44 -04:00
xor.h
sanitize <linux/prefetch.h> usage
2011-05-20 12:50:29 -07:00