0

DMA マッピング フレームワークの Contiguous Memory Allocator をテストしようとしています。CMA をサポートするカーネル 3.5.7 をコンパイルしました。これは実験的なものですが、動作するはずです。私の目標は、スキャッター/ギャザー機能のないデバイスのカーネル モジュールに物理的に連続した 32MB のメモリ チャンクをいくつか割り当てることです。

Barry Song のテスト パッチでシステムをテストしています: http://thread.gmane.org/gmane.linux.kernel/1263136

しかし、でメモリを割り当てようとすると、echo 1024 > /dev/cma_test. 私は得るbash: echo: write error: No space left on device。そしてdmesgで:misc cma_test: no mem in CMA area

何が問題なのですか?私は何が欠けていますか?システムが新たに再起動され、カーネル 3.2 の bigphysarea パッチが同様のシステムでその量を割り当てることができたため、少なくとも 350 MB の空き連続メモリがあるはずです。

お時間をいただきありがとうございます!

4

1 に答える 1

0

最後に、カーネル 3.5 と bigphysarea パッチ (3.2 から) を使用することにしました。それは簡単で、魔法のように機能します。

CMA も優れたオプションですが、デバッグを使用するのは少し難しくなります (CMA には実際のデバイスが必要です)。何が問題だったのかを見つけるために、すべてのスキルを使い果たしました。カーネルコード内の Printk は、これをデバッグする唯一の可能性でした。

于 2013-08-05T13:24:12.613 に答える