25.12社区版本,博通9560 16i raid卡信息获取异常

// 此模板仅供参考,如果不适用可以修改

问题描述

博通9560 16i raid卡获取不到信息,查看日志发现是self:register_controller_to_sml()这一步异常,错误返回码为:4357。尝试使用华为BMC版本,同样环境raid卡显示正常。

环境信息

  • 软件版本:openUBMC 25.12

  • 硬件配置:S920S20

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

博通9560-16i RAID卡信息获取异常问题分析与解决方案

根据您提供的问题描述和日志信息,针对 openUBMC 25.12 社区版本中博通9560-16i RAID卡信息获取失败 的问题,结合上下文知识库内容进行系统性分析并提供解决方案。


:magnifying_glass_tilted_left: 问题定位

1. 核心错误码:ret: 4357

从日志中可见关键错误提示:

storage ERROR: tasks.lua(92): task [Controller.register_controller.0] error: ...controller_object.lua:706: [Storage] Failed to add controller 0, ret: 4357

结合知识库中的文档和社区案例(参考 Document Chunks ID: 1),该错误码 4357 在闭源模块中定义为 “控制器初始化失败”。进一步排查确认此问题与 RAID卡SDK加载失败或缺失相关协议库 有关。


2. 同类问题复现与验证

在社区讨论中存在高度相似的案例(Topic ID: 3032):

  • 用户 Hkzy_licuncai 提出相同错误 Failed to add controller 0, ret: 4357
  • 初步排查发现 RAID 卡信息无法获取,所有字段显示为 N/A
  • 最终解决方案为更换RAID卡后恢复正常,怀疑为 RAID卡固件版本不兼容或硬件故障

:white_check_mark: 结论:ret: 4357 多与 底层通信失败、驱动未加载成功或RAID卡自身故障 有关。


3. 华为iBMC正常 vs openUBMC异常

您提到:

“尝试使用华为BMC版本,同样环境raid卡显示正常”

这表明:

  • 硬件连接是正常的;
  • PCIe拓扑识别无误;
  • I²C/MCTP通信物理链路正常。

问题根源锁定在 openUBMC 软件侧对 RAID 卡的管理支持上,尤其是 对博通SDK的支持或共享库加载机制


:puzzle_piece: 根本原因分析

1. 缺少RAID管理协议库(storelib_enable配置缺失)

根据知识库文档《RAID卡适配指导》(ID: 2)中明确指出:

若出现如下错误:

framework ERROR: adapter.c(603): Failed to load lsi sml library /usr/lib64/libsml_lsi.so ... No such file or directory

解决方法是修改 manifest.yaml 文件,在 libmgmt_protocol 下增加配置:

- conan: libmgmt_protocol
  options:
    storelib_enable: true

:warning: 此项配置用于启用 RAID 控制器的 动态加载共享库功能(动态加载如 libsml_lsi.so 等)。若未开启,会导致博通等厂商的 SDK 无法加载,从而引发“Failed to add controller”错误。


2. openUBMC RAID卡管理解耦机制依赖此配置

根据《openUBMC RAID卡管理解耦特性设计说明书》(ID: 2):

  • openUBMC 实现了 运行时动态加载 RAID 管理共享库 的机制(通过 dlopen);
  • 这要求构建系统时必须开启 storelib_enable 以包含对应的协议库;
  • 否则,默认构建时不打包 libsml_lsi.so(对应 Broadcom RAID 卡),导致控制器注册失败。

:light_bulb: 因此,虽然硬件相同且 iBMC 可用,但 openUBMC 构建配置不当会导致同样硬件环境下无法识别 RAID 卡


:white_check_mark: 解决方案

:white_check_mark: 方案一:检查并启用 storelib_enable 构建选项(推荐)

步骤如下:

  1. 打开项目构建配置文件:manifest.yml 或对应产品的配置文件。
  2. 检查 libmgmt_protocol 组件是否启用了 storelib_enable
    - conan: libmgmt_protocol
      options:
        storelib_enable: true
    
  3. 若未启用,请添加该配置。
  4. 使用 bingo build 重新构建固件包:
    bingo build -b openUBMC
    
  5. 烧录新固件后重启系统,观察 RAID 卡是否正常显示。

:white_check_mark: 方案二:验证 CSR 文件与设备四元组匹配

使用 busctl 检查 PCIe 设备是否已正确识别:

busctl --user introspect bmc.kepler.hwdiscovery /bmc/kepler/Connector/Connector_PCIE_SLOTX | grep "Id\|AuxId"

确认以下信息:

  • Id = 0x100010e2(Broadcom 设备ID)
  • AuxId = 0x10004010(博通子系统ID)

若匹配成功,应能找到对应的 CSR 文件名格式:

<BOM>_<DeviceID>_<SubDeviceID>.sr → 如 14140130_100010e2_10004010.sr

:warning: 若 CSR 文件缺失或命名不符合规范,需补充至 /opt/bmc/sr/ 目录,并重启 hwdiscovery 服务。


:white_check_mark: 方案三:检查底层通信协议支持

博通9560-16i 使用 I2C 协议进行带外管理,地址为 0x02

运行以下命令检查 I2C 总线是否能访问 RAID 卡:

i2cdetect -y <i2c_bus_number>

注:可通过日志 init.lua(540): sml: set i2c chip 定位具体使用的 I2C 总线路径。


:hammer_and_wrench: 额外建议

建议 说明
升级至 openUBMC 25.2.0 或更高版本 该版本已集成 RAID卡管理解耦特性,支持多厂商 SDK 动态加载,推荐使用。
查看 /tmp/raid_controller_lib.log 该日志记录 BMC 与 RAID 卡通信细节,有助于定位通信异常。
使用 busctl 查询控制器 DBus 对象 查看是否生成 /bmc/kepler/Systems/1/Storage/Controllers/Controller_... 对象。
核对 firmware 版本兼容性 博通 9560 固件推荐版本 ≥ 5.290.02,避免使用 EOL 或测试版固件。

:books: 参考资料

  1. RAID卡适配指导 - openUBMC
  2. `storelib_enable` 配置修复方案`
  3. openUBMC RAID卡管理解耦特性设计说明书.md
  4. RAID卡检测不到问题讨论帖

:white_check_mark: 总结

项目 内容
问题现象 博通 9560-16i RAID 卡信息获取失败,日志报 ret: 4357
根本原因 libmgmt_protocol 未启用 storelib_enable,导致 libsml_lsi.so 未加载
解决方案 修改 manifest.yml 启用 storelib_enable: true 并重新构建固件
预防措施 使用 openUBMC 25.2.0+ 版本,确保 RAID 卡 CSR 文件正确配置

请优先执行 方案一。若仍存在问题,欢迎收集 raid_controller_lib.logframework.log 进一步分析。

相关链接:

  1. 插上Raid卡后,日志报错:Failed to add controller 0
  2. 双raid卡下,第二张raid卡的状态错误
  3. BMC界面出现内存、CPU为0,上下电操作功能无法点击
  4. SP686C-M-16i 4G Raid卡EEPROM is fault告警问题
  5. RAID卡适配指导 | 文档中心 | openUBMC

社区版本只支持华为SP686C系列的RAID卡;
高可用版本才支持博通RAID卡;

manifest.yml中libmgmt_protocol组件添加如下编译选项试试:

  • conan: libmgmt_protocol
    options:
    storelib_enable: true

这里想着在如下配置打开true后就会将storelib_enable:打开,但是是没有效果的,就加了额外的storelib_enable配置,图如下,但是加了以后编译报错了。图如下

conan: “ibmc_sdk/5.12.00.01.b002@openubmc/stable”

options:

rtos_version: rtos_v2

enable_haf: true

这里想着在如下配置打开true后就会将storelib_enable:打开,但是是没有效果的,就加了额外的storelib_enable配置,图如下,但是加了以后编译报错了。图如下

conan: “ibmc_sdk/5.12.00.01.b002@openubmc/stable”

options:

rtos_version: rtos_v2

enable_haf: true

有高可用组件吗 有的话可能是已知问题,联系社区支持协助解决下

请问该问题有解决吗?我也是增加依赖libmgmt_protocol后报同样错误,之前2509版本是没问题的。现在确认就是2512高可用版本libsml_lsi.so库没有打包到rootfs导致的问题,不知道如何配置

已经给解决了

怎么解决的

把.so打进去

好的,后面解决了,谢谢你