【每日一题】Linux命令lspci查询的PCIe Link Status的释义
Linux中通过lspci -vvv -s b:d.f查看PCIe设备状态时,LnkSta字段显示当前链路运行状态。其中: Speed表示传输速率(如32GT/s对应PCIe 5.0) Width表示通道数量(如x8) 6个状态标志位中: "+"表示该位为1(状态激活) "-"表示该位为0(状态未激活) 标志位包括训练错误(TrErr)、训练中(Train)

我们经常在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) Gen1 2.5 GT/s Gen2 5.0 GT/s Gen3 8.0 GT/s Gen4 16.0 GT/s Gen5 32.0 GT/s Gen6 64.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)。
| 字段 | 全称 | 含义 | “+” 表示 | “-” 表示 |
|---|---|---|---|---|
| TrErr | Training Error | 链路训练错误标志。表示在 LTSSM(Link Training and Status State Machine)阶段检测到训练错误。 | 链路训练时发生过错误。 | 未检测到训练错误。 |
| Train | Training | 当前链路是否处于“训练中”状态。 | 链路正在重新训练(例如速率/宽度变化)。 | 链路已稳定(正常工作)。 |
| SlotClk | Slot Clock Configuration | 指示设备与上游是否使用相同参考时钟(RefClk)。 | 使用相同的时钟源(共用参考时钟)。 | 不共用时钟(异步时钟)。 |
| DLActive | Data Link Layer Active | 数据链路层是否处于活动状态。 | 链路已建立并处于活动传输状态。 | 数据链路层未激活(链路断开或休眠)。 |
| BWMgmt | Bandwidth Management Status | 链路带宽管理状态。 | 最近检测到链路带宽变化事件(例如链路速率或宽度变化)。 | 没有检测到带宽变化事件。 |
| ABWMgmt | Autonomous 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-
那就表示:
-
当前正在链路重新训练;
-
检测到训练错误;
-
链路处于活动状态;
-
正在带宽调整;
-
使用共用时钟。
更多推荐


所有评论(0)