【问题求助】PCIe卡出现LinkWidth、LinkSpeed值为NA

// 此模板仅供参考,如果不适用可以修改

问题描述

PCIe卡概率出现LinkWidthAbility、LinkWidth、LinkSpeed、LinkSpeedCapability值为NA

环境信息

  • 软件版本:OpenUBMC LTS SP1

数据源来自imu,求助是否有类似问题

答案内容由AI生成,仅供参考:

结论

当前问题主要归因于 PCIe BDF 映射异常CSR/pcie_device 初始化流程不完整,导致链路能力字段未能正确读取。虽然设备已识别(FirmwareVersion、Model 正常),但动态性能属性缺失。

:wrench: 建议优先修复 BDF 地址异常问题,并核查 CSR 中关于 LinkWidth 和 MaxLinkRate 的配置完整性。

如有需要,可提供完整日志供进一步分析。

点击此处查看详细分析解答

PCIe卡 LinkWidth、LinkSpeed 等值为“N/A”问题分析与排查建议

根据您提供的问题描述和上下文信息,部分 PCIe 网络适配器(如 Broadcom BCM957508-P2100G)在特定条件下出现 LinkWidthLinkSpeedLinkSpeedCapabilityLinkWidthCapabilityMaxPCIeType 等关键属性值为 "N/A" 的现象。该问题可能影响系统对硬件链路状态的监控、带宽告警判断及拓扑管理。


问题现象总结

  • 异常字段

    • LinkWidth = "N/A"
    • LinkSpeed = "N/A"
    • LinkSpeedAbility = "N/A"
    • LinkWidthAbility = "N/A"
    • LinkSpeedCapability = "N/A"
    • MaxPCIeType = "N/A"
  • 涉及设备

    • 型号:BCM957508-P2100G(即 NetXtreme-E Dual-port 100G QSFP56 Ethernet PCIe4.0 x16 Adapter)
    • 位置:通过 PCIeRiser1 连接
    • 关联 CPU:CPU1
    • 正常预期 BDF 地址应为 0000:41:00.0,实际 RootBDF 显示为 0000:0f:00.0
  • 数据来源IMU 提供 PCIe 设备信息

  • 软件版本:OpenUBMC LTS SP1


根本原因分析

结合知识图谱信息与文档内容,导致上述字段为 "N/A" 的主要原因可能包括以下几点:

1. PCIe Bus Number 异常导致硬件枚举失败

  • 在知识库中明确指出:

    BCM957508-P2100G PCIe卡在BMC升级或重启后,其Bus Number异常地显示为 0xf (15) 而非预期的 0x40

  • 实际 BDF 地址为 0000:0f:00.0,不符合系统预期地址 0000:41:00.0
  • 此类异常会导致:
    • BMC 无法正确通过标准 PCI 配置空间读取设备能力(如 Link Speed/Width);
    • pcie_device 组件在初始化时无法完成设备发现,导致关键属性缺失;
    • 依赖 BDF 正确映射的 PSRCSRTopology 建立失败。

2. pcie_device 组件初始化失败或数据获取异常

  • pcie_device 是 OpenUBMC 中负责管理 PCIe 拓扑、链路信息的核心模块。
  • pcie_device 服务未能正常启动或与 BIOS/IPMI 通信异常,则无法获取链路能力信息。
  • 知识图谱中提到:

    pcie_device reported a failure while initializing the PCIe card.
    pcie_device plays a role in discovery, configuration, and initialization of PCIe devices.

  • pcie_device 无法从 BIOS 成功读取拓扑信息时,系统将默认填充 "N/A"

3. Smart Provisioning 或 CSR 配置不完整

  • 文档显示 BCM957508-P2100G 是一种 新适配型号

    “BCM957508-P2100G 是 newly adapted network card model that may not be fully supported by the current Smart Provisioning software.”

  • 若 CSR(Control and Status Register)配置中缺失如下配置,会导致链路能力字段无法解析:
    • PcieAddrInfo 对象未正确配置;
    • ConnectorIDAuxID 未通过四元组(VendorID + DeviceID + SubVendorID + SubDeviceID)正确设置;
    • BusinessConnector 中缺少 LinkWidthMaxLinkRate 定义。

:pushpin: 特别说明:PCIe 卡(尤其是 OCP/标卡)需通过 IdentifyMode=2 加载方式,由 BMC 查询 IMU 获取 BDF 四元组信息,并动态填充 Connector.IDConnector.AuxID。若此流程中断,将导致后续链路信息无法加载。


验证与排查建议

:white_check_mark: 1. 检查 PCIe BDF 地址是否正常

# 在 OS 层使用 lspci 命令验证设备真实 BDF
lspci | grep -i broadcom
# 正常应显示类似:41:00.0 Ethernet controller: Broadcom BCM57508

若显示为 0f:00.0,则说明:

  • BIOS 或 PCIe 总线重映射异常;
  • Root Complex 设置错误;
  • SerDes 或 Riser 卡链路协商异常。

:white_check_mark: 2. 确认 pcie_device 服务运行状态

登录 BMC 查看 pcie_device 是否正常运行:

systemctl status pcie_device
# 或检查日志:
journalctl -u pcie_device --since "1 hour ago"

查看是否存在以下错误:

  • failed to initialize PCIe card
  • timeout reading topology information
  • BDF mismatch detected

:white_check_mark: 3. 核查 CSR 配置完整性

请确认以下 CSR 对象已正确配置:

(1)PcieAddrInfo 配置示例:

"PcieAddrInfo_BCM957508": {
  "SlotID": "PCIeRiser1",
  "RootBDF": "0000:41:00.0",
  "FunctionTypes": ["Net Card"]
}

(2)PCIeCardPCIeDevice 配置:

"PCIeDevice_1": {
  "DeviceName": "BCM957508-P2100G",
  "FunctionClass": 2,
  "DeviceType": "PCIe Card",
  "SlotType": "x16"
}

(3)BusinessConnector 设置链路能力:

"Connector_PCIE_Riser1": {
  "Name": "PCIeRiser1",
  "Direction": "Downstream",
  "Slot": 1,
  "LinkWidth": "X16",
  "MaxLinkRate": "PCIe 4.0",
  "ConnectorType": "PCIe CEM"
}

:warning: 必须确保 LinkWidthMaxLinkRate 明确设置,否则系统无法填充 LinkWidthCapability 等字段。


:white_check_mark: 4. 检查 IMU 数据接口是否正常返回

由于数据源来自 IMU,请确认以下接口返回值是否完整:

# 示例:查询 PCIe 设备函数信息
GET /redfish/v1/Systems/1/FabricAdapter/PCIeCard1/PCIeFunction

预期输出中不应包含 "N/A",而应为:

"LinkSpeed": "16.0GT/s",
"LinkWidth": "x16",
"MaxPCIeType": "GEN4"

如果仍为 "N/A",需进一步确认:

  • IMU 是否能正确访问 PCIe 配置空间;
  • 是否因权限或寄存器访问超时导致读取失败。

:white_check_mark: 5. 参考类似案例处理方式

  • 在知识图谱中,zybwh(openUBMC 核心维护者)曾建议:

    “verify visibility of Connector_PCIE_6 in hwdiscovery resource tree”
    “analyze system logs to resolve errors”

  • 建议执行命令检查硬件自发现树:

    dbus-send --print-reply --system --dest=org.openbmc.DeviceInventory /bmc/kepler/pcie_device org.freedesktop.DBus.Properties.Get string:org.openbmc.pcie_device string:DeviceInfo
    

解决方案建议

措施 说明
:wrench: 修正 BDF 地址映射 升级 BIOS 或调整 UEFI 设置,确保 BCM957508-P2100G 分配到正确的 Bus 0x40 及 BDF 41:00.0
:package: 完善 CSR 配置 补全 PcieAddrInfoBusinessConnector.LinkWidthMaxLinkRate 等字段
:counterclockwise_arrows_button: 重启 pcie_device 服务 清除异常状态,重新触发设备枚举
:hammer_and_wrench: 更新 Smart Provisioning 使用支持 BCM957508-P2100G 的新版 Provisioning 工具进行适配
:test_tube: 增加日志调试 在 pcie_device 中启用 debug 模式,跟踪 getLinkSpeed()getLinkWidth() 流程

附加说明:硬件兼容性

  • 该卡已在如下平台部署:
    • :white_check_mark: Taishan2280_5280
    • :white_check_mark: KunLun2280V3
  • 建议核对目标服务器型号是否在其兼容列表中。

结论

当前问题主要归因于 PCIe BDF 映射异常CSR/pcie_device 初始化流程不完整,导致链路能力字段未能正确读取。虽然设备已识别(FirmwareVersion、Model 正常),但动态性能属性缺失。

:wrench: 建议优先修复 BDF 地址异常问题,并核查 CSR 中关于 LinkWidth 和 MaxLinkRate 的配置完整性。

如有需要,可提供完整日志供进一步分析。

可以在pcie_device组件中找get_pcie_lang_info函数,在里面将debug日志级别调整为notice以上,看一下获取imu的返回,确实imu是否能读通以进一步判断

加日志复现了,出问题时确实是从imu获取出来的数值是全0

image