背景描述
当前接了8张 300I A2的卡,用的26年330的版本,能获取到卡的序列号/功耗等信息;通过mdbctl 查看PCIeCard对象,发现PartNubmer字段值为空
求助
要怎样排查PartNumber信息为空的问题呢?
当前接了8张 300I A2的卡,用的26年330的版本,能获取到卡的序列号/功耗等信息;通过mdbctl 查看PCIeCard对象,发现PartNubmer字段值为空
要怎样排查PartNumber信息为空的问题呢?
答案内容由AI生成,仅供参考:
您的问题极可能是以下原因之一:
FruData_NPUCard.BoardPartNumber 字段为空 或
PCIeCard_1.PartNumber 未正确映射到 FruData 源
mdbctl lsprop FruData_NPUCard_xxxxx 检查源数据FruData_NPUCard 定义完整性根据您提供的背景信息,Atlas 300I A2 NPU卡能够正常识别并获取序列号、功耗等信息,但 PartNumber 字段显示为空。以下是系统性的排查步骤和分析。
在OpenUBMC系统中,PartNumber 信息通常来源于以下流程:
物理设备(VPD/EEPROM) → SMBus读取 → std_smbus.lua → compute服务 → 数据模型(PCIeCard/NPUCard) → Web界面展示
对于 Atlas 300I A2 卡,该字段的映射关系如下(基于知识图谱):
PCIeCard_1.PartNumber 的值通常通过表达式引用:<=/FruData_NPUCard.BoardPartNumber 或直接读取硬件 VPD。FruData_NPUCard,则会导致 PartNumber 显示为空。使用 mdbctl 检查底层 FRU 数据是否包含 BoardPartNumber:
mdbctl lsprop FruData_NPUCard_<InstanceId>
实例ID格式为:
010101010107(对应 Slot 7),需替换为您实际的卡实例。
期望输出包含:
BoardPartNumber= "02314RAL"
如果存在 → 说明硬件定义完整,问题出在 数据绑定或配置错误。
如果为空或缺失 → 说明 VPD 中没有写入 PartNumber,需要刷新或补写。
查看 sr 文件中 PCIeCard_1 对象的 PartNumber 配置是否正确:
"PCIeCard_1": {
"PartNumber": "<= /FruData_NPUCard.BoardPartNumber"
}
或是否被硬编码为表达式失败的情况?
应确保其值来自 FruData_NPUCard.BoardPartNumber,而非静态字符串或错误路径。
参考点:已知 Atlas 300I A2 的标准 PartNumber 为 02314RAL,可在所有相关实体中验证(如 KG 中多个实体均标明此值)。
执行命令查看 FruData_NPUCard 是否已加载:
mdbctl call ObjectManager get_objects | grep FruData_NPUCard
若无输出,表示该对象未创建,原因可能是:
sr 文件中未启用 FruData_NPUCardFruData_NPUCard 未与 NPUCard_1 关联正确配置应包括:
"NPUCard_1": {
"RefFrudata": "#/FruData_NPUCard"
}
运行以下命令检查 compute 服务是否有 std_smbus 读取失败日志:
logread -f | grep "std_smbus"
# 或
journalctl -u compute | grep "failed"
常见错误示例如 Document Chunk 5 所示:
compute DEBUG: std_smbus.lua(315): failed to retrieve response protocol: std_smbus
说明:虽然您能读取序列号和功耗,但可能某些字段(如 BoardPartNumber)位于不同 offset,通信不稳定仍可能导致部分读取失败。
建议:
VPD 是否完整,特别是 Board Area 的 Part/Model 字段是否被擦除。i2cget 手动读取 VPD EEPROM 内容进行验证。执行以下命令查看整个 PCIeCard_1 对象的属性:
mdbctl lsprop PCIeCard_1_010101010107
重点关注:
| 字段 | 是否有值 |
|---|---|
SerialNumber |
|
PcbVersion |
.A |
BoardID |
170 |
VendorID / DeviceID |
0x19e5 / 0xd802 |
PartNumber |
若其他字段正常,唯独 PartNumber 异常 → 问题集中在 映射路径错误或 FruData 中缺省字段。
从 Document Chunk 6 可知,前端页面可能未从正确的接口获取数据:
/bmc/kepler/Systems/Processors/NPUPartNumber 字段到视图建议前端检查:
bmc.kepler.Systems.Processor.NPU 接口?PartNumber 属性?可使用浏览器开发者工具 → Network 抓包 → 查看 /Systems/Processors/NPU 的响应内容。
| 排查项 | 建议操作 |
|---|---|
| 1. 检查 VPD 中的 BoardPartNumber | 使用 mdbctl lsprop FruData_NPUCard_xxx |
| 2. 核对 SR 文件映射 | 确保 PCIeCard_1.PartNumber 正确引用 |
| 3. 检查 FruData_NPUCard 配置 | 确保与 NPUCard 绑定 |
| 4. 查看 compute 日志 | 排除 SMBus 通信异常 |
| 5. 验证硬件 VPD 内容 | 必要时用工具刷写标准 VPD |
| 6. 前端页面数据绑定 | 确认是否缺失字段渲染 |
02314RAL(多个KG实体一致确认)"PCIeCard_1": {
"PartNumber": "02314RAL",
"Manufacturer": "Huawei",
"Model": "Atlas_300I_A2",
"PcbVersion": ".A"
}
2509 平台存在 FRU 信息显示异常(文档3、6)NPU_1 对象配置会影响 FruData 加载(文档4066)尝试手动设置一个测试值,验证是否前端可显示:
mdbctl setprop PCIeCard_1_010101010107.PartNumber "02314RAL"
然后刷新 Web 页面,观察是否显示。
若显示成功 → 说明前端逻辑正常,问题出在 自动获取机制 上。
您的问题极可能是以下原因之一:
FruData_NPUCard.BoardPartNumber 字段为空 或
PCIeCard_1.PartNumber 未正确映射到 FruData 源
mdbctl lsprop FruData_NPUCard_xxxxx 检查源数据FruData_NPUCard 定义完整性如需进一步协助,请提供:
FruData_NPUCard_<id> 的完整属性输出sr 文件中 PCIeCard_1 和 FruData_NPUCard 的配置片段我们将可进一步精准诊断。