使用 DMA api - dma_alloc_coherent 扩展内核 4MB 内存分配限制

使用 DMA api - dma_alloc_coherent 扩展内核 4MB 内存分配限制

我使用的是 Ubuntu 16.04,我想使用 dma_alloc_coherent 分配大于 4MB 的 DMA 缓冲区(非缓存)。当我尝试执行此操作时,调用返回 NULL。我尝试使用内核标志 CONFIG_DMA_CMA 等来启用通过连续内存分配器的分配。我看到 CMA 内存被保留,并且我看到 cma_allocator 分配内存,但我仍然无法超过 4MB,即使内存已通过 CMA 分配器为我的驱动程序保留。

答案1

CONFIG_DMA_CMA 是一个内核编译标志。除非你知道你的内核已经用这个编译了。否则,你需要一个定制的内核。RHEL 和 Ubuntu 的主要版本似乎都没有启用此选项。

相关内容