[PATCH 6/8] drivers: add Contiguous Memory Allocator
Russell King - ARM Linux
linux at arm.linux.org.uk
Wed Jul 6 10:23:45 EDT 2011
On Wed, Jul 06, 2011 at 04:09:29PM +0200, Arnd Bergmann wrote:
> Maybe you can simply adapt the default location of the contiguous memory
> are like this:
> - make CONFIG_CMA depend on CONFIG_HIGHMEM on ARM, at compile time
> - if ZONE_HIGHMEM exist during boot, put the CMA area in there
> - otherwise, put the CMA area at the top end of lowmem, and change
> the zone sizes so ZONE_HIGHMEM stretches over all of the CMA memory.
One of the requirements of the allocator is that the returned memory
should be zero'd (because it can be exposed to userspace via ALSA
and frame buffers.)
Zeroing the memory from all the contexts which dma_alloc_coherent
is called from is a trivial matter if its in lowmem, but highmem is
harder.
Another issue is that when a platform has restricted DMA regions,
they typically don't fall into the highmem zone. As the dmabounce
code allocates from the DMA coherent allocator to provide it with
guaranteed DMA-able memory, that would be rather inconvenient.
More information about the linux-arm-kernel
mailing list