Asignar (estáticamente) memoria en el momento de arranque del kernel

Estoy trabajando con el kernel de Linux y me gustaría asignar una matriz de tamaño de subpágina de forma estática en el momento del arranque (en el espacio del kernel), que luego será utilizada por el kernel para fines de progtwigción. ¿Podría alguien, por favor, indicarme la mejor manera de hacer esto?

Esta memoria nunca debe liberarse explícitamente durante la ejecución normal del sistema operativo, excepto implícitamente al final (apagado).

Ya conozco alloc_bootmem() pero me gustaría conocer / explorar otras posibilidades también. Sería realmente genial si alguien pudiera señalarme un fragmento de código que utiliza la memoria de una manera similar a la que ya existe en el kernel de Linux.

Algunos módulos del kernel utilizan esta técnica para asignar DMA Buffer cuando se necesita un tamaño grande, por ejemplo, el módulo jazzdma y el módulo nlm-dma

Tenga en cuenta que si está utilizando el asignador de memoria de tiempo de arranque para el propósito de dma, debe usar

 void *alloc_bootmem_low_pages(unsigned long size); 

en lugar de

void *alloc_bootmem_pages(unsigned long size);

Porque DMA solo puede acceder al tipo de memoria baja