lkml.org 
[lkml]   [2012]   [Feb]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH 12/15] drivers: add Contiguous Memory Allocator
    From
    On Fri, Feb 3, 2012 at 8:18 PM, Marek Szyprowski
    <m.szyprowski@samsung.com> 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>
    > Acked-by: Arnd Bergmann <arnd@arndb.de>
    > Tested-by: Rob Clark <rob.clark@linaro.org>
    > Tested-by: Ohad Ben-Cohen <ohad@wizery.com>
    > Tested-by: Benjamin Gaignard <benjamin.gaignard@linaro.org>
    > ---

    [...]

    > +/*
    > + * Contiguous Memory Allocator
    > + *
    > + *   The Contiguous Memory Allocator (CMA) makes it possible to
    > + *   allocate big contiguous chunks of memory after the system has
    > + *   booted.
    > + *
    > + * Why is it needed?
    > + *
    > + *   Various devices on embedded systems have no scatter-getter and/or
    > + *   IO map support and require contiguous blocks of memory to
    > + *   operate.  They include devices such as cameras, hardware video
    > + *   coders, etc.
    > + *
    > + *   Such devices often require big memory buffers (a full HD frame
    > + *   is, for instance, more then 2 mega pixels large, i.e. more than 6
    > + *   MB of memory), which makes mechanisms such as kmalloc() or
    > + *   alloc_page() ineffective.
    > + *
    > + *   At the same time, a solution where a big memory region is
    > + *   reserved for a device is suboptimal since often more memory is
    > + *   reserved then strictly required and, moreover, the memory is
    > + *   inaccessible to page system even if device drivers don't use it.
    > + *
    > + *   CMA tries to solve this issue by operating on memory regions
    > + *   where only movable pages can be allocated from.  This way, kernel
    > + *   can use the memory for pagecache and when device driver requests
    > + *   it, allocated pages can be migrated.
    > + *

    Without boot mem reservation, what is the successful rate of CMA to
    serve requests of 1MiB, 2MiB, 4MiB and 8MiB chunks?
    --
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2012-02-05 05:27    [W:0.029 / U:61.340 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site