PCIe列挙を理解するのに助けが必要です
PCIe は、IO マップ IO をメモリ マップ IO に変更します。PCIe 仕様では、MMIO を使用した構成読み取りの拡張メカニズムが導入されています。PCIe は構成レジスタのメモリ アドレスを認識しているため、メモリ読み取りを使用して構成読み取りトランザクションを実行します。
列挙中、PCIe エンドポイントはメモリ アドレスに割り当てられません (BDF にも割り当てられません)。BDF を割り当てるために、CPU は PCIe エンドポイントが有効かどうかベンダー ID を要求します。PCIe エンドポイントが有効なベンダー ID を送信すると、CPU は PCIe エンドポイントの BDF を割り当て、メモリ アドレスを構成 BAR に書き込んでメモリ マップ IO を作成します。
ベンダー ID を取得するために、CPU はアドレス ポート (IO マップ 0x0CF8 内) への IO 書き込みと、データ ポート (IO マップ 0xCFC 内) からの IO 読み取りを使用することを理解しています。
しかし、ARM CPU にはメモリ マップしかなく (IO マップはありません)、ベンダー ID をどのように要求するのでしょうか? どのようなタイプの TLP パケットが使用されるのでしょうか?
IO マップなしの PCIe パケットの列挙プロセスを説明していただければ幸いです。