【代码检视合入】[需求]: 新增支持YMTC PE511 NVMe硬盘

@dli_bmc_vigaq @yelmh_kno07

东辉哥,明浩哥,伙伴[需求]: 新增支持YMTC PE511 NVMe硬盘AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台
已自测完成,现已提起PR,还请帮忙检视合入,感谢。

涉及到storage仓

和vpd仓

答案内容由AI生成,仅供参考:
:white_check_mark: 总结
新增 YMTC PE511 NVMe 硬盘支持,技术路径清晰,主要工作集中在 vpd 的 SR 文件配置storage 的设备识别扩展。当前 openUBMC 架构已支持同类设备接入,建议尽快提交 PR 并推动合入。

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

新增支持 YMTC PE511 NVMe 硬盘需求分析与实现路径

根据您提出的“新增支持YMTC PE511 NVMe硬盘”需求,结合 openUBMC 系统架构及相关组件信息,现提供以下综合分析与实现建议。


:magnifying_glass_tilted_left: 背景与目标

本需求旨在将新型 YMTC PE511 NVMe 硬盘 集成到 openUBMC 系统中,确保 BMC 能够正确识别、管理并监控该型号硬盘的运行状态(如温度、寿命、健康状态等),同时保证其在 WebUI、IPMI、Redfish 等接口中正常展示和可控。

该功能涉及两个核心代码仓:

  • storage 组件:负责 NVMe 设备的探测、监控与管理。
  • vpd 组件:负责设备的 Vital Product Data(关键产品数据)描述与映射。

:puzzle_piece: 涉及组件分析

1. storage 组件

storage 是 openUBMC 中负责存储设备管理的核心模块,主要职责包括:

  • 通过 PCIe / NVMe-MI 协议获取 NVMe 盘信息(型号、序列号、固件版本等)。
  • 监控硬盘温度、剩余寿命、读写错误等关键指标。
  • 通过 D-Bus 向上层服务暴露硬件状态。
  • 支持 IPMI / Redfish 接口查询与控制。

:white_check_mark: 相关能力已在近期版本增强

  • openUBMC 25.09 版本已新增对 Samsung PM9D3A、Memblaze PBlaze7、Solidigm D7-PS1010 等 NVMe 硬盘的支持(见搜索结果 #6)。
  • 支持通过 GetNvmeInfo IPMI 命令获取 NVMe 信息(KG 实体:GetNvmeInfo)。
  • 支持从带内采集 SMART 信息(搜索结果 #7)。

:pushpin: 因此,storage 框架已具备扩展新 NVMe 型号的能力,只需适配 YMTC PE511 的设备 PID/VID 或协议特性即可


2. vpd 组件

vpd(Vital Product Data)组件用于描述硬件设备的元数据,包括设备型号、厂商 ID、协议类型等,用于 BMC 进行设备识别与配置加载。

:wrench: 关键文件路径:

  • vpd/mds/service.json:定义设备模型与 SR 文件绑定关系。
  • .sr 文件(如 14100513_00000001020330323030_0.sr):描述具体设备的属性、寄存器地址、通信协议等。

:pushpin: 参考文档:

用户“Aaeon”曾在 GitCode 社区通过修改 vpd/mds/service.json 并添加 .sr 文件成功集成新硬件(见 Document Chunk #3)。

因此,为支持 YMTC PE511,需要:

  1. 创建或更新对应的 .sr 描述文件。
  2. platform.sr 或设备映射表中注册其 Product ID 和 Vendor ID。
  3. 更新 service.json 版本号并构建。

:white_check_mark: 实现路径建议

步骤一:确认 YMTC PE511 的硬件标识

  1. 获取 YMTC PE511 的以下信息:

    • Vendor ID (VID):PCI 设备厂商 ID
    • Device ID (DID)
    • Subsystem Vendor ID / Subsystem ID
    • 是否使用标准 NVMe 协议?是否有私有扩展指令?

    :warning: 可通过 lspci -vvv 或设备手册获取。

  2. 判断是否需定制协议处理:

    • 若为标准 NVMe 协议 → 只需配置 .sr 文件。
    • 若有专有管理命令 → 需在 storage 中扩展驱动逻辑。

步骤二:更新 vpd 仓库

# 克隆 vpd 仓库
git clone https://gitcode.com/openUBMC/vpd.git
  1. 创建 SR 文件模板

    {
      "Nvme_1": {
        "Slot": "${Slot}",
        "TemperatureCelsius": "<=/Scanner_Temp.Value",
        "MediaType": 1,
        "Protocol": 6,
        "PredictedMediaLifeLeftPercent": "<=/Scanner_Remtime.Value",
        "Failure": "<=/Scanner_SSD_Fault.Value",
        "PredictiveFailure": "<=/Scanner_SSD_Pre_Fault.Value",
        "VPDChip": "#/Chip_Virtual_SSD",
        "SSDChip": "#/Chip_SSD"
      }
    }
    

    保存为 YMTC_PE511_PROTOCOL_0.sr

  2. 更新 service.json

    {
      "Version": "1.80.56",  // 可酌情递增
      "Objects": {
        "YMTC_PE511": {
          "Bom": "1410...",  // 对应 YMTC PE511 的 BOM 编码
          "SrFile": "YMTC_PE511_PROTOCOL_0.sr"
        }
      }
    }
    
  3. 提交 PR 到 vpd 仓库


步骤三:更新 storage 仓库

git clone https://gitcode.com/openUBMC/storage.git
  1. 检查设备识别逻辑

    • 查看 storagenvme.luascanner.lua 文件是否根据 VID/DID 进行匹配。
    • 如未包含 YMTC VID(如 0x1d1d),需添加:
      if vid == 0x1d1d and did == 0x... then
          return "YMTC_PE511"
      end
      
  2. 支持 SMART/NVMe-MI 读取

    • 验证 GetNvmeInfo 命令能否正确返回数据(IPMI Cmd: 0x38, 0x13)。
    • 可参考搜索结果 #7 中的 c_nvme 对象加载机制。
  3. 提交 PR 到 storage 仓库


:hammer_and_wrench: 测试建议

  1. 功能测试

    • 插入 YMTC PE511 硬盘,检查:
      • WebUI 是否识别并显示型号、序列号。
      • ipmitool raw 0x38 0x13 是否返回有效数据。
      • Redfish /redfish/v1/Systems/1/Storage/1/Drives/1 是否返回正确信息。
  2. 兼容性测试

    • 使用 Automated Compatibility Test 验证与现有系统(如 RAID 卡、背板)的兼容性(KG:Automated Compatibility Test)。
  3. 日志排查

    • 查看 app.logfirmware_mgmtstoragedevmon 是否有报错。
    • 示例日志路径:/var/log/app.log

:speech_balloon: 提交流程建议

由于您已标注 @dli_bmc_vigaq@yelmh_kno07,建议:

  1. 在 GitCode 上为 storagevpd 仓库分别创建 PR。
  2. 在 PR 中引用此需求,并贴出自测报告。
  3. 若无人响应审阅,可联系对应 SIG 组:
    • Storage SIG:负责存储设备管理。
    • Hardware SIG:负责硬件适配与 SR 文件规范。

:pushpin: 参考案例:用户“百敖_蒋超”曾遇到 GitCode 地址失效问题,通过创建 issue 跟进解决(见 Document Chunk #6)。


:books: 相关链接


:white_check_mark: 总结
新增 YMTC PE511 NVMe 硬盘支持,技术路径清晰,主要工作集中在 vpd 的 SR 文件配置storage 的设备识别扩展。当前 openUBMC 架构已支持同类设备接入,建议尽快提交 PR 并推动合入。

@caiyesheng_b48v3 业胜哥也帮忙看下,感谢

收到,正在组织检视中。

1 个赞

已检视合入

1 个赞