Hello,
On Tuesday, July 05, 2011 9:42 AM Marek Szyprowski wrote:
The Contiguous Memory Allocator is a set of helper functions for DMA mapping framework that improves allocations of contiguous memory chunks.
CMA grabs memory on system boot, marks it with CMA_MIGRATE_TYPE and gives back to the system. Kernel is allowed to allocate movable pages within CMA's managed memory so that it can be used for example for page cache when DMA mapping do not use it. On dma_alloc_from_contiguous() request such pages are migrated out of CMA area to free required contiguous block and fulfill the request. This allows to allocate large contiguous chunks of memory at any time assuming that there is enough free memory available in the system.
This code is heavily based on earlier works by Michal Nazarewicz.
Signed-off-by: Marek Szyprowski m.szyprowski@samsung.com Signed-off-by: Kyungmin Park kyungmin.park@samsung.com CC: Michal Nazarewicz mina86@mina86.com
drivers/base/Kconfig | 77 +++++++++ drivers/base/Makefile | 1 + drivers/base/dma-contiguous.c | 367 ++++++++++++++++++++++++++++++++++++++++ include/linux/dma-contiguous.h | 104 +++++++++++ 4 files changed, 549 insertions(+), 0 deletions(-) create mode 100644 drivers/base/dma-contiguous.c create mode 100644 include/linux/dma-contiguous.h
diff --git a/drivers/base/Kconfig b/drivers/base/Kconfig index d57e8d0..95ae1a7 100644 --- a/drivers/base/Kconfig +++ b/drivers/base/Kconfig @@ -168,4 +168,81 @@ config SYS_HYPERVISOR bool default n
+config CMA
- bool "Contiguous Memory Allocator"
- depends HAVE_DMA_CONTIGUOUS && HAVE_MEMBLOCK
The above line should be obviously "depends on HAVE_DMA_CONTIGUOUS && HAVE_MEMBLOCK". I'm sorry for posting broken version.
(snipped)
Best regards