問題タブ [pci-e]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
memory-management - DMA トランザクションのメモリ アライメント (Windows Driver Foundation)
Windows 7 用の WDF を使用してカスタムメイドの PCI-Express デバイス用の DMA ベースのドライバーを作成しています。
ご存じのとおり、PCI-Express バス トランザクションは 4k メモリ境界を超えることはできません。カスタム デバイスはこれをチェックしないため、ドライバーが 4k メモリ境界に合わせた DMA 転送のみを要求するようにする必要があります。
デバイスのプロファイルは WdfDmaProfilePacket64 です。
WdfDeviceSetAlignmentRequirement(DevExt->Device, 4095) を使用してみましたが、DMA 開始アドレスが適切に整列されません。
適切に配置されたアドレスのみを要求するように WDF フレームワークを構成するにはどうすればよいでしょうか?
pci - pci_enable_device_mem と pci_enable_device の違いは何ですか?
pci_enable_device_mem と pci_enable_device の違いは何ですか?
ixgbe では、pf ドライバーは pci_enable_device_mem を使用し、vf ドライバーは pci_enable_device を使用します。
embedded - PCI 拡張 ROM ヘッダー INIT 関数のエントリ ポイント
セクション 6.3.3.1 に示されているとおり。ROM ヘッダー拡張 (PCI ローカル バス仕様 v2.3)、オフセット 0x3h は「INIT 関数のエントリ ポイントです。POST はこの場所に対して FAR CALL を実行します。」、このフィールドの長さは 3 バイトです。
長さが 40448 バイトの PCI Rom イメージがあり、エントリ ポイントのバイトは 0xe9_cf_06 (アドレス 0x3h で 0xe9、アドレス 0x4h で 0xcf、アドレス 0x5h で 0x06) です。このオフセットは、ROM イメージの長さを超えています。どなたか、このフィールドの意味と、それを使用して ROM 上のイメージのエントリ ポイントを特定する方法を説明していただけませんか?
任意の提案をいただければ幸いです。ありがとう!
linux - PCI 構成空間の latency_timer レジスターの値を設定できません
次のコマンドを使用して、Intel PCI カードのレイテンシ タイマー値を設定しようとしています。
しかし、このレジスタの値を読み戻すと、変更されず、以前の値が表示されます。
次のコマンドを使用して、レジスタの値を表示しています
レイテンシタイマーの値を変更できない理由を誰か教えてもらえますか?
私はLinux
機械を使っています。
pci - PCI / PCIe BAR のサイズはどのように決定されますか?
PCI 構成空間のベース アドレス レジスタ (BAR) が PCI アドレスの開始位置を定義することは知っていますが、この領域のサイズはどのように確立されるのでしょうか?
アドレス空間のどこまで処理できるかはハードウェアだけが知っているので、これは確かにハードウェアの特性です。ただし、PCI 構成構造に BAR サイズ フィールドが表示されないようです。
linux-kernel - CPU はどのようにして PCI アドレス空間を認識しますか?
PCI および PCIe デバイスは、デバイスの構成空間の特定の領域に書き込むことで、特定の物理メモリ アドレスに応答するように (BIOS または OS のコードを介して) CPU によって構成できることを理解しています。
実際、Linux カーネルには、デバイスの多くの要件 (メモリ アライメント、DMA 機能など) を考慮して、これを行うための非常に複雑なアルゴリズムがあります。
このメモリがいつ、どこにマッピングされるかをソフトウェアが制御しているように見えるのを見て、私の質問は次のとおりです。ソフトウェアの一部は、物理メモリのマッピングをどのように制御できますか?
この構成の後、PCI デバイスは指定されたアドレス範囲に応答することを認識しますが、CPU は、動的に決定された特定のアドレスに対して PCI バスを使用する必要があることをどのように認識しますか?
linux - Linux での PCIe の再列挙とホットプラグ
ケーブルを介して Linux RH6.4 マシンに接続された PCIe デバイスを使用しています。マシンを再起動せずに (電源を入れた後) Linux に強制的に PCIe デバイスを再列挙させる必要があります。
現在、列挙は再起動後にのみ行われます。私は以下を試しましたが、うまくいきません
echo "1" > /sys/bus/pci/rescan
任意のアイデアありがとう