Estendendo o limite de 4 MB do kernel para alocações de memória usando API DMA - dma_alloc_coherent

Estendendo o limite de 4 MB do kernel para alocações de memória usando API DMA - dma_alloc_coherent

Estou usando o Ubuntu 16.04 e gostaria de usar dma_alloc_coherent para alocar um buffer DMA (não armazenado em cache) maior que 4 MB. Quando tento fazer isso, a chamada retorna NULL. Eu tentei os sinalizadores do kernel CONFIG_DMA_CMA, etc. para habilitar a alocação através do alocador de memória contíguo. Vejo a memória CMA sendo reservada e vejo o cma_allocator alocando a memória, mas ainda não consigo ultrapassar 4 MB, embora a memória tenha sido reservada para meu driver por meio do alocador CMA.

Responder1

CONFIG_DMA_CMA é um sinalizador de compilação do kernel. A menos que você saiba que seu kernel foi compilado com isso. Caso contrário, você precisará de um kernel customizado. Parece que a versão principal do RHEL e do Ubuntu não habilita esta opção.

informação relacionada