【每日一题】Linux命令lspci查询的PCIe Link Status的释义
2025-10-30 10:53:12

我们经常在Linux下面使用lspci -vvv -s b:d.f查看某个pcie device的状态,输出内容较长,其中最常看的就是Link status,这个一般简写为LnkSta,它的下面有6个参数的后面跟着”+“和"-",这个是啥意思呢?如下

  • LnkSta:   Speed 32GT/s, Width x8 

  •               TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-

其实,上面这一行是 lspci -vvv 输出中 Link Status (LnkSta) 字段的内容,属于 PCI Express Capability 能力块,用于描述该 PCIe 链路的当前运行状态。 我们来逐项详细解释:


一、行的整体结构

LnkSta:  Speed 32GT/s, Width x8 
             TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-
  • 这一行属于 PCI Express Capability → Link Status Register 的解码结果。

  • 它描述了当前链路的运行速率、宽度,以及多个状态标志位。


二、参数逐项解释

1️⃣ Speed 32GT/s

  • 表示链路当前的传输速率(单位为 GT/s,即 GigaTransfers per second,每秒十亿次传输)。

  • 32 GT/s 对应 PCIe 5.0 规范的速率

  • 各代速率参考:


    PCIe 代数速率 (GT/s)
    Gen12.5 GT/s
    Gen25.0 GT/s
    Gen38.0 GT/s
    Gen416.0 GT/s
    Gen532.0 GT/s
    Gen664.0 GT/s(PAM4 编码)

2️⃣ Width x8

  • 表示链路当前的通道数量。

  • x8 说明该设备当前和对端建立了 8 lane(8 通道) 的物理连接。

  • 如果设备是 x16 插槽但只训练出 x8,就意味着只使用了 8 条通道,可能受限于主板布局、BIOS 或硬件问题。


三、后续六个状态标志位详解

这些标志位来自 PCIe Link Status Register (PCI Express Capability Register Offset + 0x12),用于描述链路状态或控制标志。 “+” 表示该位被置位(=1),“-” 表示未置位(=0)。


字段全称含义“+” 表示“-” 表示
TrErrTraining Error链路训练错误标志。表示在 LTSSM(Link Training and Status State Machine)阶段检测到训练错误。链路训练时发生过错误。未检测到训练错误。
TrainTraining当前链路是否处于“训练中”状态。链路正在重新训练(例如速率/宽度变化)。链路已稳定(正常工作)。
SlotClkSlot Clock Configuration指示设备与上游是否使用相同参考时钟(RefClk)。使用相同的时钟源(共用参考时钟)。不共用时钟(异步时钟)。
DLActiveData Link Layer Active数据链路层是否处于活动状态。链路已建立并处于活动传输状态。数据链路层未激活(链路断开或休眠)。
BWMgmtBandwidth Management Status链路带宽管理状态。最近检测到链路带宽变化事件(例如链路速率或宽度变化)。没有检测到带宽变化事件。
ABWMgmtAutonomous Bandwidth Management Status自动带宽管理状态。设备或系统自动调整过带宽(PCIe 4.0+ 引入)。未发生自动带宽调整。

四、符号意义总结


符号含义
“+”该状态位为 1(active / true / detected / enabled)。例如:检测到错误、链路在训练中、共享时钟存在、带宽变化发生等。
“-”该状态位为 0(inactive / false / none / disabled)。表示未检测到、未发生或未启用该状态。

五、综合举例说明

你的输出:

LnkSta: Speed 32GT/s, Width x8
        TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-

解释为:

  • 当前链路以 PCIe Gen5 (32 GT/s) 速率运行;

  • 有效宽度为 x8

  • 未检测到链路训练错误;

  • 当前链路训练已完成;

  • 未共用主板参考时钟;

  • 数据链路层未激活(这通常意味着设备可能在 D3hot 或 D3cold 电源状态);

  • 未发生带宽管理或自动带宽调整事件。

如果其中出现例如:

LnkSta: Speed 16GT/s, Width x16, TrErr+ Train+ SlotClk+ DLActive+ BWMgmt+ ABWMgmt-

那就表示:

  • 当前正在链路重新训练;

  • 检测到训练错误;

  • 链路处于活动状态;

  • 正在带宽调整;

  • 使用共用时钟。

更多关于PCIe 6.0/CXL的测试工具和技术,请下载Saniffer公司2025.6.16最新更新的白皮书12.3版本 - 《PCIe5&6.0, CXL, NVMeNVMoF, SSD, NAND, DDR5, 800GE测试技术和工具白皮书_ver12.3》。
白皮书下载链接 (或者点击下面的二维码直接下载):

https://pan.baidu.com/s/18_c11aeFhSBe2qa-jUFs_Q?pwd=mm9y 提取码: mm9y

图片

如果你有其任何关于PCIe5&6.0, CXL, NVMe/NVMoF, NAND, DDR5/LPDDR5以及UFS测试方面的我问题想咨询,请访问:访问www.saniffer.cn / www.saniffer.com 访问我们的相关测试工具和产品;或者添加点击左下角“阅读原文”留言,或者saniffer公众号留言,致电021-50807071 / 13127856862,sales@saniffer.com。

图片