错误掩码解码器
输入 Correctable Error Status Register 的值(偏移 0x10),自动识别哪些错误位被置位。
错误掩码解码器
输入 Uncorrectable Error Status Register 的值(偏移 0x04),自动识别哪些错误位被置位及其严重性。
注:此处为 Synopsys DesignWare 系控制器常用的 LTSSM 调试编码(如 DWC DEBUG_REG[6:0]),各厂商 IP / 另见 LnkSta.speed_eq_status 的编码可能不同,使用前请对照所用控制器的手册。
LTSSM 状态分组说明
- Detect:设备检测阶段,确认对端设备存在
- Polling:轮询阶段,建立位同步和链路参数
- Configuration:配置阶段,协商链路宽度和 Lane 号
- Normal (L0):正常工作状态
- Recovery:恢复阶段,链路参数变化或错误后重新建立
- Equalization:均衡阶段(Gen3+),调整发送端参数
- Power Management:电源管理状态(L0s/L1/L2/L3)
- Hot Reset:热复位状态
Capability 类型说明
- Standard:传统 Capability,位于配置空间 0x34 处的链表中,ID 为 8 位(0x00-0xFF)
- Extended:扩展 Capability,位于扩展配置空间(0x100+),ID 为 16 位。Extended Capability 以链表形式组织
Link 寄存器解码器
解码 PCIe Capability 结构中的 LnkCap(+0x0C,32 位)、LnkCtl(+0x10,16 位)、LnkSta(+0x12,16 位)。调试链路降速、降宽、ASPM 异常时,优先看这三个寄存器。lspci 的 lnkcap=<value> lnkctl=<value> lnksta=<value> 输出可直接粘贴。
LnkCap — Link Capability Register(PCIe Cap + 0x0C)
LnkCtl — Link Control Register(PCIe Cap + 0x10)
LnkSta — Link Status Register(PCIe Cap + 0x12)
AER Root Error Command / Status
DLLP 类型速查(数据链路层包)
DLLP 核心 6 字节:Type 1B + 信息 3B + CRC-16 2B(链路上加 SDP 帧符号后为 8 字节)。类型由 Byte0 的 bit[7:5] 编码。
调试提示
- 链路降速/降宽:对比 LnkCap 的 Max Speed/Width 与 LnkSta 的 Current Speed/Negotiated Width,差值即协商降级;结合 LnkSta.Link Training 位判断是否仍在训练
- ASPM 异常:LnkCtl.ASPM Control 是实际生效值,需与 LnkCap.ASPM Support 能力匹配;系统可能因功耗策略动态改写
- 链路训练卡死:LnkSta.Link Training 持续为 1 且速度/宽度为 0 时,查看 LTSSM 状态码标签页定位卡住的状态