资讯动态

PCIe 测试必备:lspci -vvv 关键状态寄存器全解析(LnkSta / DevSta / CESta / UESta)

发布时间:2026/10/24 5:31:50 来源:尧图企业网站定制
一、BDF 是什么怎么找BDF 是 PCI/PCIe 设备的地址格式Domain:Bus:Device.Function 0000:01:00.00000Domain一般单机都是000001Bus 号00Device 号0Function 号常用查看方式# 查看所有设备省略 domainlspci# 查看完整 BDFlspci-D# 按关键词过滤lspci-D|grep-i关键词# 按厂商:设备 ID 过滤lspci-D-nn|grep-i8086:1234# 通过网卡名反查ethtool-ieth0|grepbus-info# 通过 sysfs 查看ls/sys/bus/pci/devices/拿到 BDF 后即可查看详细信息lspci-vvv-s0000:01:00.0注意必须加-vvv否则 LnkSta、DevSta、AER 等 PCIe Capability 信息不会显示。二、核心状态寄存器详解1. LnkStaLink Status链路状态告诉你链路实际跑成什么样。重点看两个值Speed当前协商速率如 8GT/s、16GT/sWidth当前协商宽度如 x4、x8、x16后面的TrErr-、Train-等标志位表示训练错误、正在训练等状态。关键用法和 LnkCap 对比。如果 LnkSta 的速率或宽度低于 LnkCap说明链路降级了可能存在物理连接、主板布线或兼容性问题。2. DevStaDevice Status设备状态反映设备是否健康主要看错误标志位是否为CorrErr可纠正错误UncorrErr不可纠正错误FatalErr致命错误UnsuppReq不支持的请求一旦这些位从-变成说明设备检测到了对应的 PCIe 错误。3. CEStaCorrectable Error Status可纠正错误状态属于 AER高级错误报告能力记录可以自动恢复的错误。通常不导致数据丢失但频繁出现可能暗示信号质量或链路稳定性问题。常见标志位RxErr接收器错误物理层信号问题BadTLP / BadDLLP事务层 / 数据链路层包错误Rollover计数器溢出Timeout超时AdvNonFatalErr / NonFatalErr咨询性非致命错误4. UEStaUncorrectable Error Status不可纠正错误状态记录无法自动恢复的严重错误。一旦置位通常意味着数据传输失败、链路异常甚至设备挂死是排查稳定性的重点。常见标志位DLP数据链路协议错误链路层严重问题TLP / MalfTLP毒化 TLP 或畸形 TLP事务层包格式错误CmpltTO / CmpltAbrt完成超时或完成中止UnsupReq不支持的请求ACSViolACS 违规判断标准看标志位后面是-还是。-表示未发生表示已发生并记录。通过 CESta / UESta 可以直接定位到是接收错误、超时还是协议违规比只看 DevSta 的有错/无错更利于排查根因。三、除了上面 4 个还应该看什么LnkCap链路能力设备/端口理论支持的最高速率和宽度。必须和 LnkSta 对比看是判断链路是否降级的基准。LnkCtl / LnkCtl2链路控制LnkCtl 里的 ASPM 状态如L1 Enabled或Disabled可能影响测试中的功耗与链路行为LnkCtl2 包含目标链路速度、合规模式进入状态等。LnkSta2链路状态 2主要用于 Gen3 及以上高速链路的均衡状态判断。重点关注EqualizationComplete等标志是否完成以及当前去加重等级De-emphasis可辅助判断信号质量是否达标。AERCap 及高级错误详情如果 DevSta 出现了错误标志Advanced Error Reporting 部分会给出更细的分类如 Receiver Error、Bad TLP 等。AERCap 本身显示设备支持哪些高级错误报告能力如 ECRC 校验支持情况。DevCtl设备控制与 DevSta 对应显示设备对各类错误的上报使能状态如CorrErr、FatalErr。有时 DevSta 没报错可能是因为对应错误类型的上报在 DevCtl 中被关闭了。SlotCap / SlotSta槽位与热插拔如果芯片连接在可热插拔的插槽上可以显示插槽电源限制、注意按钮状态、是否存在热插拔事件等。驱动与内核模块lspci-k# 或 lspci -nnk查看设备当前使用的内核驱动以及可用模块确认驱动加载正常是排查问题的基本步骤。原始配置空间lspci-xxx# 标准配置空间lspci-xxxx# 扩展配置空间标准解析字段不够用时可以直接对照 PCIe 规范解析原始十六进制数据。sysfs 补充读取部分错误计数和特性状态也可以通过 sysfs 读取# AER 错误计数cat/sys/bus/pci/devices/BDF/aer_*_err# SR-IOV 或 ACS 状态cat/sys/bus/pci/devices/BDF/sriov_numvfscat/sys/bus/pci/devices/BDF/acs四、总结寄存器作用关注点LnkCap链路理论能力作为 LnkSta 的对比基准LnkSta链路实际状态速率/宽度是否降级LnkCtl链路控制ASPM 策略LnkSta2均衡状态Gen3 均衡完成情况DevSta设备错误状态CorrErr/UncorrErr/FatalErr 是否置位DevCtl错误上报使能是否关闭了某类错误上报CESta可纠正错误RxErr/BadTLP/Timeout 等UESta不可纠正错误DLP/TLP/CmpltTO 等严重错误核心判据三条DevSta 错误位是否置位LnkSta 速率/宽度是否低于 LnkCap判断是否降级CESta / UESta 具体错误位是否从-变用于定位根因。把这三点结合起来看基本就能覆盖 PCIe 链路与错误排查中最常见的问题。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑