私は、PCIeバーのmmioスペースにアクセスする際のアライメントに関する基本的な疑問を持っています。アクセスされるアドレスはDWアライメントでなければならず、カウントはDWアラインメントでなければなりませんか?PCI mmioアクセスアライメントはどうですか?
私の知る限り、TLBのアドレスフィールドは下位2ビットを無視し、長さフィールドの単位もDWです。それは質問の上の意味ですか?はいですか?それ以外の場合、CPUはmmio空間に対してアライメントされていないアクセスを処理しますか?私は天気をアクセス違法かどうか下回るかを知りたい
: - READB(BAR0) - READB(BAR0 + 1) - READL(BAR0 + 1)のPCIe バスに何が起こるかトランザクション
アラインされていないmmioアクセスを発行する場合
ありがとう、それは私を助けました。例#2では、私は自分のPC上でいくつかの実験をしています。 DWORD境界を越えて読み取られる場合、私はreadl(bar0 + 2)のようないくつかのintersting値を取得します。いくつかのデバイスでは、最初のDWORDの循環シフトされた値を取得し、一部のデバイスはすべてのFFを返します。 devmem2ツールでレジスタを読みました。この結果は設計上のものか、デバイスだけがBEを扱うことができないのでしょうか? BEでは、デバイスはアライメントされていないアクセスを処理できるようです。私の質問maillist https://lkml.org/lkml/2017/5/28/89 –
すべてのFFを返すデバイスは、そのメモリを読み込んだ時点でD3にはありませんか? – nowaqq
私は確信しています。読み揃えアドレスであるため、FFではなく正しい値を返します。試したデバイスの1つに、Intel内蔵GPUがあります。 –