x86_64のLinuxでメモリマッピングIOでマスクされた「失われた」物理メモリを回復する方法は?

x86_64のLinuxでメモリマッピングIOでマスクされた「失われた」物理メモリを回復する方法は?

/proc/iomemマイコンピュータのビデオカードなどのPCIデバイスにマッピングされた重要なアドレス空間を表します。e0000000-efffffff : 0000:01:00.0私の計算が正しい場合は250MBです。 RAMがわずか16GBの64ビットデスクトップでは、Linuxまたはすべての最新のカーネルがいくつかのトリックを使用して物理メモリのこの部分を回復できるとします。しかし、正確にどうなりますか?

やや関連する質問 - ノースブリッジ/メモリコントローラがプログラム可能な規則に従ってメモリ/ IOアクセスをルーティングして、メモリマップされた領域(pciデバイスなど)への書き込みアクセスの場合、RAMはこれらの書き込みについて知りません。ルーティングがなくなったので、一種の「ルーティングテーブル」があるはずですか?そのようなテーブルはどこにありますか? Linuxカーネルはこのテーブルにどのようにアクセスしますか?

ベストアンサー1

私はこのトピックに関するいくつかのwikiページを見つけました。PCI_ホールそして3_GB_バリア

現在x86では、PCIの脆弱性はメモリの再マッピングとして扱うことができますが、16M未満のいくつかの小さな領域など、MMIOが盗んだすべてのRAMアドレスを回復するわけではありません。チップセットには、限られた数の領域のみを再マッピングする機能しかありません。

おすすめ記事