現在、私はFPGAで開発されたカスタムモジュールを使用するためのLinuxドライバを開発しようとしています。そのためには、2つのARMコアで動作するLinuxディストリビューションでザイリンクスZynq SoCを使用し、VHDLモジュールはFPGAの部分に実装されていますが、これは私の問題を理解するためには重要ではありません。カーネルモジュールのキャッシュメモリを無効にする方法
私のFPGAモジュールはRAMに直接書き込みを行い、ドライバで書いた内容を読んでいますが、キャッシュメモリのために問題があります。ドライバはキャッシュから読み込み、RAMでは読み込まないため、古いデータを読み込みます。
FPGAが書き込むことができるメモリ空間を定義するために、私はkmalloc関数を使用します。キャッシュの代わりにRAMメモリから読み込みを強制するために使用できるフラグがあるかどうか知っていますか?キャッシュ暖かいページを返すようにしようとする要求キャッシュ冷ページの代わりに:
__GFP_COLD:
は私が探していますが、私は本当に彼らが何をすべきか理解していないどのような可能性が2つのフラグを見ました。 - >私はそれが単に既にキャッシュされていないページの使用を強制すると思うが、それは後でキャッシュする。あれは正しいですか ?GFP_DMA:私はexectを探しているようですが、それはDMAと互換性のあるメモリの一部の使用を強制するだけです。
kmallocで作成した配列のキャッシングを無効にするにはどうしたらいいですか?または、少なくとも、キャッシュから読み込むのではなく、プロセッサがRAMから読み出すようにするにはどうすればよいですか?
ありがとうございました!