出力には、やlspci -vvv
などのフラグが表示されます。 これらのフラグがデバイスの健全性を示すのか、また時間の経過とともに変化するのかが気になります。CorrErr
UnCorrErr
以下にサンプル出力を示します。
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast TAbort- TAbort- MAbort- SERR- PERR- INTx-
Latency: 0, Cache Line Size: 64 bytes
Interrupt: pin A routed to IRQ 19
Region 0: Memory at f6101000 (32-bit, non-prefetchable) [size=2K]
Region 1: Memory at f6100000 (32-bit, non-prefetchable) [size=256]
Capabilities: [44] Power Management version 3
Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME+
Capabilities: [80] Express (v1) Endpoint, MSI 00
DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s 64ns, L1 1us
ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
MaxPayload 128 bytes, MaxReadReq 16384 bytes
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
LnkCap: Port #1, Speed 2.5GT/s, Width x1, ASPM L0s L1, Latency L0 unlimited, L1 unlimited
ClockPM- Surprise- LLActRep- BwNot-
LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain- CommClk+
ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt-
Capabilities: [94] MSI: Enable- Count=1/1 Maskable- 64bit-
Address: fffffffc Data: 0000
答え1
このスレッドの別の投稿「cirrascale.com/blog/index.php/pci-debugging-101/」からのリンクは、2019 年には機能しなくなりました。ただし、次の場所にアーカイブされた記事を見つけました:
https://intrepid.warped.com/~scotte/OldBlogEntries/web/index-5.html
以下はリンク先の記事からの抜粋です。
特定のデバイス(今回は「0000:02:00.0」)を指定すると、詳細が表示されます。
# lspci -s 0000:02:00.0 -vvv
出力は次のようになります:
02:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon] (rev 03)
...
DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-
...
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
CEMsk: RxErr+ BadTLP+ BadDLLP+ Rollover+ Timeout+ NonFatalErr+
デバイス ステータス レジスタ (“ DevSta “) から、デバイスで何らかの修正可能なエラー (“ CorrErr+ “) が発生したことがわかります。
エラーは修正可能なエラー (“ CorrErr “) だったので、AER 出力の興味深い部分は修正可能なエラー ステータス (“ CESta “) です。致命的でないエラー ビット (“ NoNFatalErr+ “) 以外のビットは設定されていません。名前から判断すると (エラーではありますが、致命的ではありません...しかも修正可能でした!)、これは特に心配することはないように思えます。エラーがマスクされているかどうか (“ CEMsk “) をチェックすると、デバイス ベンダーがそのエラー (“ NonFatalErr+ “) をマスクすることを選択したことがわかります。つまり、ベンダーは、このエラーが PCIe デバイス チェーンをトリックして処理すべきものではないと考えていたということです。実際、PCI-SIG は修正可能な致命的でないエラーを “Advisory” エラーとして定義しており、これはソフトウェアの問題を示すものとして使用されるべきであり、PCIe バスの整合性や機能の問題を示すものとして使用されるべきではないことに注意してください。
おそらく明らかなように、市販のマザーボードに組み込まれている PCIe デバイスを調べる必要性は通常あまりありませんが、特定のデバイスが PCIe バス上のどこにあり、どのように動作しているかを把握する手順は、ほとんどのデバイスで同じです。先ほど述べたように、最近では、GB5400 などの製品について、顧客やパートナーがこれらの同じ手順に従うのを支援するケースが増えています。
答え2
いいえ、マスクされた修正可能なエラーを追跡することは、通常、PCIe デバイスのパフォーマンスに重大な影響を与える場合にのみ意味があります。