2

64 ビットの Linux ホストで 64 ビットの PCI Express カードを使用しています。問題は、バーは 64 ビットですが、常に 32 ビットのアドレス範囲にあるアドレスを取得することです。つまり、BAR の上位 32 ビットは常にゼロです。

実際の 64 ビット アドレスを使用するよう強制するにはどうすればよいですか? カーネルが pci デバイスを列挙できるように、ブート時の引数で BIOS 列挙をオーバーライドして強制しようとしましたが、BIOS と同じ結果になります。

Linux は実際の 64 ビット アドレスをサポートしていませんか?

4

1 に答える 1

0

次のことを試すことができます。まず、カーネルでPAE(物理アドレス拡張)を有効にします。次に、setpci コマンドを使用するか、ドライバーから、上位 32 ビット バー レジスタをゼロ以外の値に変更します。エンド ポイント デバイスが pci ブリッジの下にある場合は、プリフェッチ可能なベース上位 32 ビットとプリフェッチ可能ベースを変更することを忘れないでください。 fetchable Limit 上位 32 ビット レジスタを適切に設定します。

于 2012-05-21T05:07:14.880 に答える