問題タブ [pci]

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.

0 投票する
2 に答える
708 参照

linux - ネストされた QEMU ゲストでの pci デバイスの直接割り当て

QEMU を実行しており、OS ドライブに加えて、次のように AHCI コントローラーを介して別の SATA ディスクに接続しています。

その VM 内で別の VM を実行し、このディスクをその VM に直接割り当てたいと考えています。これは可能ですか?ネストされた KVM 機能が必要ですか? VT-d を有効にする必要がありますか?

ありがとう

0 投票する
2 に答える
1955 参照

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 を使用します。

0 投票する
2 に答える
680 参照

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 上のイメージのエントリ ポイントを特定する方法を説明していただけませんか?

任意の提案をいただければ幸いです。ありがとう!

0 投票する
1 に答える
502 参照

dma - DMA を使用した PCI バスでのデータ転送速度は現実的ですか?

32 ビット/33MHz PCI バスでの実際のデータ転送速度はどれくらいですか? 32K の 32 ビット サンプルを PCI カードから Windows を実行している Intel CPU に転送する必要があります。ブロックは1ミリ秒で転送されると思いますが、40ミリ秒かかります。PCI ボードには PLX PCI-9056 が搭載されています。仮想アドレスを使用してカード メモリにアクセスしていますが、CPU が故障しているため、CPU の関与によってデータ レートが維持されていると思われます。DMA に行くと、1msec 近くで転送されますか? 私が疑問を持っている理由は、PXI SDK ユーザーマニュアルに次のように記載されているためです。

「BAR スペース メモリの読み取り/書き込みは一般的に相対的に低速です。読み取りは通常 2 ~ 4MB/秒にすぎません。」

0 投票する
1 に答える
663 参照

linux - PCI 構成空間の latency_timer レジスターの値を設定できません

次のコマンドを使用して、Intel PCI カードのレイテンシ タイマー値を設定しようとしています。

しかし、このレジスタの値を読み戻すと、変更されず、以前の値が表示されます。

次のコマンドを使用して、レジスタの値を表示しています

レイテンシタイマーの値を変更できない理由を誰か教えてもらえますか?

私はLinux機械を使っています。

0 投票する
3 に答える
27719 参照

pci - PCI / PCIe BAR のサイズはどのように決定されますか?

PCI 構成空間のベース アドレス レジスタ (BAR) が PCI アドレスの開始位置を定義することは知っていますが、この領域のサイズはどのように確立されるのでしょうか?

アドレス空間のどこまで処理できるかはハードウェアだけが知っているので、これは確かにハードウェアの特性です。ただし、PCI 構成構造に BAR サイズ フィールドが表示されないようです。

0 投票する
2 に答える
831 参照

linux-kernel - エラーをチェックするためにユーザー空間内のデバイスの制御レジスターをポーリングする

PCI デバイスで発生したユーザー空間でエラーをログに記録するコードを書いています (カーネルは既にカーネル リング バッファーにログを記録しています)。現在、目の前に2つのアプローチがあり、

  1. (eventfd を使用して) ユーザー空間プロセスに割り込みを送信するようにカーネル デバイス ドライバーを変更し、(select() または poll() を使用して) この割り込みを受信すると、ioctl を使用して詳細なエラー情報を取得できます (デバイス ドライバーの変更が必要になります)。 )。これには、避けたいカーネルコードの変更が必要です。

  2. 私のプロセスはルートとして実行されるため、sysfs を使用してデバイスのエラー ステータス レジスタを読み書きできます。このためには、常にレジスタをポーリングする必要があり、エラーが発生したら、ステータス レジスタを読み取ってデコードし、詳細なエラー情報を取得して、レジスタをクリアします。

ユーザー空間でのみ変更が必要なため、2 番目のアプローチに傾倒しています。

私の質問は次のとおりです。

  1. 2番目のアプローチは理にかなっていますか?
  2. もしそうなら、両方のアプローチの長所と短所は何ですか?
  3. 2 番目の方法でポーリングを行うと、CPU サイクルが浪費されます。最初のアプローチで select() または poll() を使用すると、同様の割合で CPU サイクルが浪費されますか。

役立つ回答をいただければ幸いです。:)