Atlas 300I A2 Partnumber信息显示为空,要怎样排查

背景描述

当前接了8张 300I A2的卡,用的26年330的版本,能获取到卡的序列号/功耗等信息;通过mdbctl 查看PCIeCard对象,发现PartNubmer字段值为空

求助

要怎样排查PartNumber信息为空的问题呢?

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

:end_arrow: 结论

您的问题极可能是以下原因之一:

:warning: FruData_NPUCard.BoardPartNumber 字段为空
:warning: PCIeCard_1.PartNumber 未正确映射到 FruData 源

推荐优先操作:

  1. 执行 mdbctl lsprop FruData_NPUCard_xxxxx 检查源数据
  2. 核对 SR 文件中 FruData_NPUCard 定义完整性
  3. 如仍无效,尝试重新生成 VPD 或参考社区适配方案更新 CSR 配置
点击此处查看详细分析解答

Atlas 300I A2 PartNumber 信息显示为空的排查方案

根据您提供的背景信息,Atlas 300I A2 NPU卡能够正常识别并获取序列号、功耗等信息,但 PartNumber 字段显示为空。以下是系统性的排查步骤和分析。


:puzzle_piece: 问题定位: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 显示为空。

:magnifying_glass_tilted_left: 排查步骤

第一步:确认硬件是否存在 PartNumber 定义

使用 mdbctl 检查底层 FRU 数据是否包含 BoardPartNumber

mdbctl lsprop FruData_NPUCard_<InstanceId>

实例ID格式为:010101010107(对应 Slot 7),需替换为您实际的卡实例。

期望输出包含

BoardPartNumber= "02314RAL"

:white_check_mark: 如果存在 → 说明硬件定义完整,问题出在 数据绑定或配置错误
:cross_mark: 如果为空或缺失 → 说明 VPD 中没有写入 PartNumber,需要刷新或补写。


第二步:检查 SR/CSR 配置文件中 PartNumber 的映射

查看 sr 文件中 PCIeCard_1 对象的 PartNumber 配置是否正确:

"PCIeCard_1": {
    "PartNumber": "<= /FruData_NPUCard.BoardPartNumber"
}

或是否被硬编码为表达式失败的情况?

:white_check_mark: 应确保其值来自 FruData_NPUCard.BoardPartNumber,而非静态字符串或错误路径。

:pushpin: 参考点:已知 Atlas 300I A2 的标准 PartNumber 为 02314RAL,可在所有相关实体中验证(如 KG 中多个实体均标明此值)。


第三步:确认 FruData_NPUCard 是否被正确实例化

执行命令查看 FruData_NPUCard 是否已加载:

mdbctl call ObjectManager get_objects | grep FruData_NPUCard

若无输出,表示该对象未创建,原因可能是:

  • sr 文件中未启用 FruData_NPUCard
  • FruData_NPUCard 未与 NPUCard_1 关联

正确配置应包括:

"NPUCard_1": {
    "RefFrudata": "#/FruData_NPUCard"
}

第四步:检查 compute 组件日志,确认 SMBus 通信是否正常

运行以下命令检查 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

:light_bulb: 说明:虽然您能读取序列号和功耗,但可能某些字段(如 BoardPartNumber)位于不同 offset,通信不稳定仍可能导致部分读取失败。

建议:

  • 检查 VPD 是否完整,特别是 Board AreaPart/Model 字段是否被擦除。
  • 使用工具如 i2cget 手动读取 VPD EEPROM 内容进行验证。

第五步:对比其他字段是否正常

执行以下命令查看整个 PCIeCard_1 对象的属性:

mdbctl lsprop PCIeCard_1_010101010107

重点关注:

字段 是否有值
SerialNumber :white_check_mark: 正常
PcbVersion .A
BoardID 170
VendorID / DeviceID 0x19e5 / 0xd802
PartNumber :cross_mark: 为空?

:magnifying_glass_tilted_left: 若其他字段正常,唯独 PartNumber 异常 → 问题集中在 映射路径错误或 FruData 中缺省字段


第六步:检查 Web 前端渲染逻辑(NPU 页面)

从 Document Chunk 6 可知,前端页面可能未从正确的接口获取数据:

  • 实际功耗信息位于 /bmc/kepler/Systems/Processors/NPU
  • 但 Web 页面可能未绑定 PartNumber 字段到视图

建议前端检查

  • NPU 页面是否调用 bmc.kepler.Systems.Processor.NPU 接口?
  • 该接口是否返回 PartNumber 属性?

可使用浏览器开发者工具 → Network 抓包 → 查看 /Systems/Processors/NPU 的响应内容。


:white_check_mark: 解决建议汇总

排查项 建议操作
1. 检查 VPD 中的 BoardPartNumber 使用 mdbctl lsprop FruData_NPUCard_xxx
2. 核对 SR 文件映射 确保 PCIeCard_1.PartNumber 正确引用
3. 检查 FruData_NPUCard 配置 确保与 NPUCard 绑定
4. 查看 compute 日志 排除 SMBus 通信异常
5. 验证硬件 VPD 内容 必要时用工具刷写标准 VPD
6. 前端页面数据绑定 确认是否缺失字段渲染

:books: 参考信息(来自知识库)

  • 标准 PartNumber02314RAL(多个KG实体一致确认)
  • 设备型号:Atlas 300I A2 Inference Card
  • PCIeCard 对象结构
    "PCIeCard_1": {
        "PartNumber": "02314RAL",
        "Manufacturer": "Huawei",
        "Model": "Atlas_300I_A2",
        "PcbVersion": ".A"
    }
    
  • 已知 Issues
    • Atlas 300I A2 在 2509 平台存在 FRU 信息显示异常(文档3、6)
    • NPU_1 对象配置会影响 FruData 加载(文档4066)

:white_check_mark: 临时验证方法(快速确认)

尝试手动设置一个测试值,验证是否前端可显示:

mdbctl setprop PCIeCard_1_010101010107.PartNumber "02314RAL"

然后刷新 Web 页面,观察是否显示。
:backhand_index_pointing_right: 若显示成功 → 说明前端逻辑正常,问题出在 自动获取机制 上。


:end_arrow: 结论

您的问题极可能是以下原因之一:

:warning: FruData_NPUCard.BoardPartNumber 字段为空
:warning: PCIeCard_1.PartNumber 未正确映射到 FruData 源

推荐优先操作:

  1. 执行 mdbctl lsprop FruData_NPUCard_xxxxx 检查源数据
  2. 核对 SR 文件中 FruData_NPUCard 定义完整性
  3. 如仍无效,尝试重新生成 VPD 或参考社区适配方案更新 CSR 配置

如需进一步协助,请提供:

  • FruData_NPUCard_<id> 的完整属性输出
  • sr 文件中 PCIeCard_1FruData_NPUCard 的配置片段

我们将可进一步精准诊断。


查看了下BoardPartNumber字段为空

sr中的PartNumber字段默认配置的有值,请问下要如何排查该问题?


可以先自行阅读相关文档
docs/docs/zh/development/faq-代码预览-docs:基于 Node.js 的社区文档中心项目 - AtomGit | GitCode