DMA API を使用してカーネルのメモリ割り当ての 4MB 制限を拡張する - dma_alloc_coherent

DMA API を使用してカーネルのメモリ割り当ての 4MB 制限を拡張する - dma_alloc_coherent

Ubuntu 16.04 を使用していますが、dma_alloc_coherent を使用して 4MB を超える DMA バッファ (非キャッシュ) を割り当てたいと考えています。これを実行しようとすると、呼び出しは NULL を返します。連続メモリ アロケータによる割り当てを有効にするために、カーネル フラグ CONFIG_DMA_CMA などを試しました。CMA メモリが予約されていること、および cma_allocator がメモリを割り当てていることはわかりますが、メモリが CMA アロケータを介してドライバー用に予約されているにもかかわらず、4MB を超えることができません。

答え1

CONFIG_DMA_CMA はカーネルのコンパイル フラグです。カーネルがこれを使用してコンパイルされているかどうかがわからない場合は、カスタマイズされたカーネルが必要です。RHEL と Ubuntu の両方のメジャー リリースではこのオプションが有効になっていないようです。

関連情報