저는 Ubuntu 16.04를 사용하고 있으며 dma_alloc_coherent를 사용하여 4MB보다 큰 DMA 버퍼(캐시되지 않음)를 할당하고 싶습니다. 이 작업을 시도하면 호출이 NULL을 반환합니다. 연속 메모리 할당자를 통해 할당을 활성화하기 위해 커널 플래그 CONFIG_DMA_CMA 등을 시도했습니다. CMA 메모리가 예약되어 있고 cma_allocator가 메모리를 할당하는 것을 볼 수 있지만 CMA 할당자를 통해 드라이버용으로 메모리가 예약되었음에도 불구하고 여전히 4MB를 초과할 수 없습니다.
답변1
CONFIG_DMA_CMA는 커널 컴파일 플래그입니다. 커널이 이것으로 컴파일되었다는 것을 알지 않는 한. 그렇지 않으면 사용자 정의 커널이 필요합니다. RHEL과 Ubuntu의 주요 릴리스에서는 이 옵션을 활성화하지 않는 것 같습니다.