答案内容由AI生成,仅供参考:
解决方案
1. 修正 SR 文件类型
将 SR 文件中 Unit 的 Type 修改为 "PCIeCard",并调整 Name 为 "PCIeCard_1"(或自定义但符合规范)。参考示例:
{
"Unit": {
"Type": "PCIeCard",
"Name": "PCIeCard_1"
}
}
2. 补充 PCIeCard 对象
在 SR 文件的 Objects 中添加 PCIeCard_1 对象,并配置必要属性。可参考知识库中 E810 网卡适配的 SR 文件(topic 2471),至少包含:
SlotID、NodeID
Name、Model、VendorID、DeviceID、SubVendorID、SubDeviceID
Position、LaneOwner 等
- 健康状态关联(如
Health 指向 Component_PCIeCard.Health)
例如:
"PCIeCard_1": {
"SlotID": "<=/PCIeDevice_1.SlotID",
"NodeID": "<=/PCIeDevice_1.SlotID |> string.format('PCIeCard%s', $1)",
"Name": "E810-XXVDA2",
"VendorID": "0x8086",
"DeviceID": "0x159b",
"SubVendorID": "0x8086",
"SubDeviceID": "0x0003",
...
}
3. 确认 Connector 配置
您提供的 Connector 配置基本正确(IdentifyMode=2、Presence=1),但请确保 SourcePath 指向的 SR 文件是修正后的版本。同时检查 EffectiveFormatVersion 与 LocalFormatVersion 是否一致(当前均为 5.00,应保持同步)。
4. 重新构建并升级 BMC
- 将修改后的 SR 文件集成到 VPD 或南向驱动组件中(根据文件来源决定)。
- 重新构建 openUBMC 镜像(可使用
bingo build 命令)。
- 升级固件后,重启 BMC,检查 Web 页面是否显示 PCIe 卡信息。
5. 额外的排查建议
- 查看 BMC 资源树中是否存在
PCIeCard_* 对象。若无,则确认 SR 文件是否被正确加载(例如在 framework.log 中搜索 get csr data from xxx.sr)。
- 对比您本地 VPD 仓库中正常的
"Type": "PCIeCard" 文件,确保实际加载的 SR 文件来自于该正常定义,而非南向驱动部件的非标准文件。若来源不一致,需统一规范。
点击此处查看详细分析解答
根据您提供的信息,您遇到的问题是在 openUBMC 26.06(您提到的“630 版本”)上,SP681 网卡接入 Riser 后,虽然 BMC 已成功加载该卡并找到了对应的 SR 文件,但 Web 页面的“PCIe 卡”列表中没有显示该设备。您对比 NPU 卡的 SR 文件后,发现网卡类型的 SR 文件中 Unit 的 Type 为 "PCIeNicCard",而常规配置为 "PCIeCard",且缺少 PCIeCard 对象。
结合知识库中的相关描述,此问题的核心原因很可能在于 SR 文件的设备类型定义与 Web 展示机制不匹配。以下是分析和处理建议。
问题原因分析
- Web 展示依赖 PCIeCard 对象:在 openUBMC 中,Web 界面的“系统信息 → 其他 → PCIe 卡”列表通过
PCIeCard 对象来展示信息。该对象由 SR(CSR)文件定义,并用于关联 PCIe 设备的位置、属性等。
- SR 文件类型错误:您日志中导出的 SR 文件
Unit 定义为 "Type": "PCIeNicCard",而 PCIe 卡的标准定义为 "Type": "PCIeCard"。若使用 PCIeNicCard 类型,系统可能不会创建对应的 PCIeCard 对象,导致 Web 无法显示。
- 对象缺失:对比 NPU 卡(正常显示)的 SR 文件,网卡类型缺少
PCIeCard_1 对象,使得 Web 没有数据源可展示。
解决方案
1. 修正 SR 文件类型
将 SR 文件中 Unit 的 Type 修改为 "PCIeCard",并调整 Name 为 "PCIeCard_1"(或自定义但符合规范)。参考示例:
{
"Unit": {
"Type": "PCIeCard",
"Name": "PCIeCard_1"
}
}
2. 补充 PCIeCard 对象
在 SR 文件的 Objects 中添加 PCIeCard_1 对象,并配置必要属性。可参考知识库中 E810 网卡适配的 SR 文件(topic 2471),至少包含:
SlotID、NodeID
Name、Model、VendorID、DeviceID、SubVendorID、SubDeviceID
Position、LaneOwner 等
- 健康状态关联(如
Health 指向 Component_PCIeCard.Health)
例如:
"PCIeCard_1": {
"SlotID": "<=/PCIeDevice_1.SlotID",
"NodeID": "<=/PCIeDevice_1.SlotID |> string.format('PCIeCard%s', $1)",
"Name": "E810-XXVDA2",
"VendorID": "0x8086",
"DeviceID": "0x159b",
"SubVendorID": "0x8086",
"SubDeviceID": "0x0003",
...
}
3. 确认 Connector 配置
您提供的 Connector 配置基本正确(IdentifyMode=2、Presence=1),但请确保 SourcePath 指向的 SR 文件是修正后的版本。同时检查 EffectiveFormatVersion 与 LocalFormatVersion 是否一致(当前均为 5.00,应保持同步)。
4. 重新构建并升级 BMC
- 将修改后的 SR 文件集成到 VPD 或南向驱动组件中(根据文件来源决定)。
- 重新构建 openUBMC 镜像(可使用
bingo build 命令)。
- 升级固件后,重启 BMC,检查 Web 页面是否显示 PCIe 卡信息。
5. 额外的排查建议
- 查看 BMC 资源树中是否存在
PCIeCard_* 对象。若无,则确认 SR 文件是否被正确加载(例如在 framework.log 中搜索 get csr data from xxx.sr)。
- 对比您本地 VPD 仓库中正常的
"Type": "PCIeCard" 文件,确保实际加载的 SR 文件来自于该正常定义,而非南向驱动部件的非标准文件。若来源不一致,需统一规范。
说明
知识库明确指出:openUBMC 系统设计上要求所有 PCIe 设备必须通过 SR 文件明确定义,才能被识别和管理。因此,SR 文件是 PCIe 卡展示的唯一入口。您遇到的问题并非 BMC 配置错误,而是 SR 文件中的类型定义与对象缺失导致 Web 侧无法生成展示条目。
请按上述步骤修正 SR 文件,并重新部署,即可解决该问题。如果仍有异常,建议进一步检查南向驱动与 VPD 组件的加载通道(两者独立),确认最终生效的 SR 文件来源。