Contiguous Memory Allocator (or CMA)

The CMA plays a role as modular framework for physically contiguous memory management, which is not tied to any memory allocation method or strategyWhere memory for each device is allocated as per specific machine configurations that could be also loaded at run-time (avoiding kernel recompilation). Such configurations list memory regions (even from different memory banksassigned to each device.

CMA

The CMA framework is needed because of:
1. Various embedded device drivers have their own memory allocation code AKA .. pluggable allocators, so CMA acts as an internal entity among device drivers and  pluggable allocators.
2. Various embedded devices have no scatter-gather an I/O map support and require contiguous memory.
3. Various embedded devices impose additional requirements on the buffers (allocation in particular location/memory bank, being align at particular memory boundary, buffer memory has to be simply big).

Important Facts about Memory Regions: Each region has its own type, size, alignment demand, start address (physical address where it should be placed) and an allocation algorithm assigned.

Important Facts about Pluggable allocators:  One can develop a newer algorithm to allocate and management of memory then place it into a pluggable allocator.

Important Facts about CMA API: it operates on pages and  page frame numbers (PFNs) without providing mechanism for maintaining cache coherency , device driver should never call such API directly.

The CMA is integrated with DMA subsystem (The usual calls to the DMA API should work as usual)

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s