输出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 将可纠正的非致命错误定义为“咨询”错误,并注意它应该被用作软件问题的指示,而不是指示 PCIe 总线的完整性或功能问题。
显而易见的是,通常不需要查看嵌入在商品主板上的 PCIe 设备,但确定特定设备在 PCIe 总线上的位置以及其行为方式的步骤对于大多数设备来说都是相同的。正如我之前提到的,如今更常见的情况是帮助客户和合作伙伴对我们的 GB5400 等产品遵循相同的步骤。
答案2
不,追踪掩盖的可纠正错误通常只有当其对 PCIe 设备的性能产生重大影响时才有意义。