我使用的是 Ubuntu 16.04,我想使用 dma_alloc_coherent 來分配大於 4MB 的 DMA 緩衝區(非快取)。當我嘗試執行此操作時,呼叫會傳回 NULL。我嘗試過內核標誌 CONFIG_DMA_CMA 等來啟用透過連續記憶體分配器的分配。我看到 CMA 內存被保留,並且 cma_allocator 正在分配內存,但即使內存已通過 CMA 分配器為我的驅動程序保留,我仍然無法超過 4MB。
答案1
CONFIG_DMA_CMA 是核心編譯標誌。除非你知道你的核心已經用這個編譯了。否則,您需要自訂內核。 RHEL 和 Ubuntu 的主要版本似乎都沒有啟用此選項。