問題タブ [pci-bus]
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.
c - デバイスの電源がオフになっていても、カーネル ドライバーの PCI エラー ハンドラーが呼び出されない
カスタム PCIe デバイス用の Linux カーネル デバイス ドライバーを作成しています。ユーザー空間アプリケーションはこのデバイスにマップされ、頻繁にそのメモリにアクセスします (読み取りと書き込み)。PCIe デバイスは、ランタイム中にオフになる可能性がある外部電源によって駆動されます。
デバイスがリセットされるたびに、ユーザー アプリケーションのすべてのメモリ読み取りが返され0xFFFFFFFF
ます。カーネルドライバにデバイスのリセットをいち早く検知したいので、https://www.kernel.org/doc/html/latest/PCI/pci-error-recovery.htmlerror_detected
に合わせてコールバック関数を実装しました。
ただし、mydevice_error_detected
デバイスのリセット中に呼び出されることはありません。これは、ユーザー空間アプリケーションが継続的にデバイス メモリの読み取りに失敗し (結果として取得しよう0xFFFFFFFF
として) いる場合であってもです。
また、lspci
電源がオフになっていても、PCI 再スキャン後にデバイスが一覧表示されます。
01:00.0 Unassigned class [ff00]: MyVendorId Device 5a00 (rev ff)
唯一の違いはrev ff
、デバイスがオフ状態のときに行末に " " が発生することです。それ以外の場合lspci
は戻ります
01:00.0 Unassigned class [ff00]: MyVendorId Device 5a00
リセット中は構成スペースにアクセスできないため、デバイスが完全にオフになっていると確信しています。デバイスへの最初のメモリ読み取り要求が失敗/タイムアウトするたびに、カーネルがエラー検出コールバックを呼び出すことを期待しています。私の仮定は正しいですか?
pci - PCIe ローカル クロックの精度とは何を意味しますか?
物理層のロジック ブロックの受信側では、ローカル クロックの精度は +/- 300 ppm です。誰かこれについて詳しく説明してくれませんか?!