
Я использую Ubuntu 16.04 и хотел бы использовать dma_alloc_coherent для выделения буфера DMA (не кэшированного) размером более 4 МБ. Когда я пытаюсь это сделать, вызов возвращает NULL. Я пробовал флаги ядра CONFIG_DMA_CMA и т. д., чтобы включить выделение через непрерывный распределитель памяти. Я вижу, что память CMA резервируется, и вижу, как cma_allocator выделяет память, но я все еще не могу выйти за пределы 4 МБ, хотя память была зарезервирована для моего драйвера через распределитель CMA.
решение1
CONFIG_DMA_CMA — это флаг компиляции ядра. Если только вы не знаете, что ваше ядро скомпилировано с этим. В противном случае вам нужно настроенное ядро. Похоже, что основные выпуски RHEL и Ubuntu не включают эту опцию.