2603版,PCIE配置问题

bmc版本:2603

模块:920l

当前有4个pcie卡槽需要配,对应关系如下:

配置后os下dmidecode --type 9查看,只能看到3个pcie信息:

root@server:~# dmidecode --type 9

dmidecode 3.3

Getting SMBIOS data from sysfs.
SMBIOS 3.3.0 present.

Handle 0x0011, DMI type 9, 24 bytes
System Slot Information
Designation: PCIe SLOT2
Type: x8 PCI Express x8
Current Usage: In Use
Length: Other
ID: 2
Characteristics: None
Bus Address: 0000:07:00.0
Data Bus Width: 0
Peer Devices: 0
Height: Not applicable

Handle 0x0012, DMI type 9, 24 bytes
System Slot Information
Designation: PCIe SLOT3
Type: x4 PCI Express x4
Current Usage: Available
Length: Other
ID: 3
Characteristics: None
Bus Address: 0000:00:06.0
Data Bus Width: 0
Peer Devices: 0
Height: Not applicable

Handle 0x0013, DMI type 9, 24 bytes
System Slot Information
Designation: PCIe SLOT4
Type: x8 PCI Express x8
Current Usage: Available
Length: Other
ID: 4
Characteristics: None
Bus Address: 0000:00:0c.0
Data Bus Width: 0
Peer Devices: 0
Height: Not applicable

bus=5,portid为4的这个pcie没有信息,一键收集如下:

根据一键收集,bus=5,portid为4的这个pcie绑定到8上面去了,但是我配置的VPDportid是配置的4,配置如下:

“Connector_PCIe_1”: {
“Bom”: “14140130”,
“Slot”: 1,
“Position”: 1,
“Presence”: 1,
“Id”: “”,
“AuxId”: “”,
“Buses”: [
“I2cMux_9545Chan2”
],
“SystemId”: “${SystemId}”,
“ManagerId”: “${ManagerId}”,
“ChassisId”: “${ChassisId}”,
“SilkText”: “RiserCard${Slot}”,
“IdentifyMode”: 2,
“Container”: “Component_RiserCard”,
“Type”: “PCIe”
},
“BusinessConnector_1”: {
“Name”: “Up_1”,
“Direction”: “Upstream”,
“Slot”: 1,
“LinkWidth”: “X16”,
“MaxLinkRate”: “PCIe 4.0”,
“ConnectorType”: “UBCDD”,
“Ports”: [
{
“Name”: “Down_1”,
“ID”: 49,
“Offset”: 0,
“Width”: 16
}
]
},
“BusinessConnector_2”: {
“Name”: “Down_1”,
“Direction”: “Downstream”,
“Slot”: 1,
“LinkWidth”: “X16”,
“MaxLinkRate”: “PCIe 4.0”,
“ConnectorType”: “PCIe CEM”,
“UpstreamResources”: [
{
“Name”: “Up_1”,
“ID”: 255,
“Offset”: 0,
“Width”: 16
}
],
“RefMgmtConnector”: “#/Connector_PCIe_1”,
“RefPCIeAddrInfo”: “#/PcieAddrInfo_1”
},
“PcieAddrInfo_1”: {
“Segment”: 0,
“SlotID”: 1,
“GroupID”: 1,
“PortID”: 4,
“SocketID”: 0,
“Bus”: 5,
“Device”: 0,
“Function”: 0,
“Location”: “RiserCard${Slot}”,
“ComponentType”: 8,
“ContainerSlot”: “${Slot}”,
“ContainerUID”: “00000001040302023940”,
“ContainerUnitType”: “IEU”,
“GroupPosition”: “PcieAddrInfo_1_${GroupPosition}”
},

之前没有遇到过这种问题,这个与bios有关系吗,要如何排查呢,除了这个pcie,其它三个都是正常的,BMCweb界面可以显示,详细的vpd配置见附件

pcie配置.txt (12.4 KB)

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

结论

核心根因很可能是:PcieAddrInfo_1 的 PortID(配置为4)与实际硬件拓扑(实际应为8)不匹配,导致BIOS无法正确上报该PCIe槽位的BDF信息,进而导致BMC和OS侧均无法识别该PCIe卡。

建议优先排查PortID配置与硬件实际的对应关系,通过咨询硬件工程师确认该槽位对应的实际 SerDes 端口,修正配置后重新测试。

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

根据您描述的问题(BMC 2603版本,920l模块,配置4个PCIe槽位,但OS下 dmidecode --type 9 只能看到3个PCIe信息,其中 bus=5, portid=4 的PCIe缺失),结合提供的知识库上下文,以下是我的分析与排查建议:

问题根因分析

与BIOS的关系

是的,该问题与BIOS直接相关。 根据知识库内容,PCIe卡的加载是基于BDF方案的:

“由于PCIe卡在业务场景下会出现热插拔的情况,为此设计了基于BDF的方案,即BIOS启动阶段主动上报每个PCIe槽位的BDF信息。BMC再通过BDF信息去PMU查询对应BDF的四元组信息,再加载对应的PCIe设备CSR。”

因此,如果BIOS没有上报该PCIe槽位的BDF信息,BMC就无法加载对应的PCIe设备,自然在OS侧和BMC Web界面都看不到该设备。

关键线索:PortID配置不匹配

您提到:“一键收集显示bus=5,portid为4的这个pcie绑定到8上面去了,但是我配置的VPDportid是配置的4”。

这指向了 PcieAddrInfo 中 PortID 配置与实际硬件拓扑不匹配 的问题。根据知识库内容:

“PcieAddrInfo中应该是rootBDF,不过这里的重点是PortID,建议咨询硬件或者看一下其他rootBDF是这个的卡PortID应该怎么配置。”

您的配置中 PcieAddrInfo_1 的 PortID 为 4,但一键收集显示实际绑定到了 8。这表明:

  • 实际硬件拓扑中,该PCIe槽位对应的 PortID 应为 8,而非 4
  • 配置的 PortID 与实际不符,导致BIOS无法建立正确的PCIe地址映射关系

拓扑构建匹配问题

根据知识库中的类似案例(“PCIE拓扑构建报错:No matching src BizConnector found”),当 PcieAddrInfo 的 PortID 与 BizConnector 或硬件实际端口不匹配时,会导致匹配失败:

“所有 PcieAddrInfo 都匹配失败…始终找不到匹配的BizConnector…问题中17对应A3a,需要排查BCU下行连接器是否有对应的端口,以及可能存在配置了不存在的端口或尚未分发。”

您的场景中,配置的 BusinessConnector_1 中 Ports 的 ID 为 49(Upstream),而 BusinessConnector_2 的 UpstreamResources 中 ID 为 255,这些 ID 需要与实际的硬件端口定义一致。

排查步骤建议

1. 确认BIOS是否上报了该PCIe的BDF信息

  • 检查BIOS日志中是否有 ReportPCICardBDFInfoToBMC 相关的记录
  • 确认该PCIe槽位是否出现在BIOS的 SlotTableInit 中(类似参考中的 SlotTableInit Status = Not Found)
  • 检查串口信息或BIOS调试日志,看是否有该槽位的BDF上报记录

2. 核对PcieAddrInfo的PortID配置

  • 重点核对 PcieAddrInfo_1 中的 PortID 是否与实际硬件拓扑一致
  • 建议咨询硬件工程师,确认该PCIe槽位实际对应的 PortID/SerDes 链路编号
  • 参考知识库建议:“PcieAddrInfo中应该是rootBDF,不过这里的重点是PortID,建议咨询硬件”

3. 检查BizConnector与PSR配置的匹配

  • 检查 UpstreamResources 中的 ID 是否与PSR(UnitConfiguration)中的 TargetPortID 对应
  • 确认 BCU 下行连接器是否有对应的端口定义
  • 与知识库中的案例对比,检查是否存在“配置了不存在的端口或尚未分发”的情况

4. 检查带内设备识别情况

  • 执行 lspci -tv 确认该PCIe设备在带内是否可见
  • 如果带内可见但未上报BDF,可能是BIOS上报流程问题
  • 如果带内不可见,需要检查硬件连接或配置问题

5. 检查丝印信息

  • 查看 /data/opt/bmc/conf/bios/silkconfig.json 中该槽位的 Silk 信息是否正确生成
  • 确认该槽位的 RootPortDeviceId、SocketId 等属性是否正确

结论

核心根因很可能是:PcieAddrInfo_1 的 PortID(配置为4)与实际硬件拓扑(实际应为8)不匹配,导致BIOS无法正确上报该PCIe槽位的BDF信息,进而导致BMC和OS侧均无法识别该PCIe卡。

建议优先排查PortID配置与硬件实际的对应关系,通过咨询硬件工程师确认该槽位对应的实际 SerDes 端口,修正配置后重新测试。

我在os下查看的**PortID就是为4**

需要确定以下问题:

  1. 是否涉及PCIeSwitch(这种情况会出现多个设备PortId一致情况,需要特殊配置)
  2. PortId需要和硬件确认,且和SocketId也有关,如果上传丝印正确,不上报bdf需要咨询带内bios人员

参考:

docs/docs/zh/development/develop_guide/feature_development/pcie_device_topo_create.md-代码预览-docs:基于 Node.js 的社区文档中心项目 - AtomGit

docs/docs/zh/development/develop_guide/feature_development/pcie_device_load_device.md-代码预览-docs:基于 Node.js 的社区文档中心项目 - AtomGit