2280v3机型使用bmc_network1.81.7后出现识别不到riser现象

问题描述

2280v3机型使用bmc_network1.81.7版本识别不到riser现象,报错链路读不通,bmc重启后可以识别到riser,但又会概率性出现识别不到i24链路下的其他部件

回退到81.6版本正常

报错如下:

1970-01-01 08:00:41.828758 hwdiscovery ERROR: hwcomponent.lua(185): position: 0101030B, get component sr failed, error: read eeprom header failed, err: Device access failed, BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:197: ./opt/bmc/libmc/lualib/sd_bus/object.lua:314: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: …bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:117: chip: Eeprom_3_11_010103, bus: I2c_4, read failed: i2c.lua:117: response error, i2c write fail, ret: 5, input:{“rw_type”:0,“smc_target”:1,“buffer”:"06 AF 20 00 03 00 00 1C ",“offsetWidth”:1,“offset”:48,“addr”:96,“len”:8}, status: 1, count: 1

1970-01-01 08:00:42.230296 hwdiscovery ERROR: hwcomponent.lua(185): position: 0101030B, get component sr failed, error: read eeprom header failed, err: Device access failed, BMC.Error.Unknow: ./opt/bmc/libmc/lualib/mc/context.lua:197: ./opt/bmc/libmc/lualib/sd_bus/object.lua:314: ./opt/bmc/apps/hwproxy/lualib/hwproxy_objects/app_bus.lua:104: …bmc/apps/hwproxy/lualib/hwproxy_objects/work_objects.lua:117: chip: Eeprom_3_11_010103, bus: I2c_4, read failed: i2c.lua:117: response error, i2c write fail, ret: 5, input:{“rw_type”:0,“smc_target”:1,“buffer”:"06 AF 20 00 03 00 00 1C ",“offsetWidth”:1,“offset”:48,“addr”:96,“len”:8}, status: 1, count: 2

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

总结

项目 内容
问题本质 bmc_network1.81.7版本中I²C通信异常导致EEPROM读取失败,进而引发Riser卡识别失败
直接原因 i2c.lua:117: response errorread eeprom header failedBMC.Error.Unknown
根本原因 软件层面I²C驱动或配置变更 + 硬件层面通信稳定性不足共同作用所致
影响范围 所有挂接在I2c_4总线上的设备(包括Riser及其扩展设备)均可能间歇性失联
解决方案建议 回退版本 + 分析变更 + 优化I²C通信策略 + 验证SR文件完整性

建议责任部门:BMC固件团队联合硬件平台团队协同定位,优先复现问题并比对两个版本的I²C底层实现差异。

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

2280v3机型使用bmc_network1.81.7后出现Riser识别异常问题分析

问题概述

在2280v3机型上使用bmc_network1.81.7版本固件时,出现无法识别Riser卡的问题。系统报错显示“I2C链路读不通”,BMC重启后可暂时识别Riser,但会概率性地再次丢失对i24链路下其他部件的识别。回退至bmc_network1.81.6版本后问题消失,表明该问题是与81.7版本相关的软件或配置变更引发的异常


错误日志分析

根据提供的错误日志片段:

hwdiscovery ERROR: hwcomponent.lua(185): position: 0101030B, get component sr failed, error: read eeprom header failed, err: Device access failed, BMC.Error.Unknow:
... chip: Eeprom_3_11_010103, bus: I2c_4, read failed: i2c.lua:117: response error, i2c write fail, ret: 5

关键错误信息提取:

错误项 内容 说明
错误类型 read eeprom header failed 无法读取EEPROM头部信息,意味着硬件发现流程从初始阶段就失败
设备名称 Eeprom_3_11_010103 目标EEPROM芯片标识符,存储着Riser板卡的SR(Component Specific Record)文件信息
通信总线 I2c_4 故障发生在I²C总线4上
具体错误 i2c.lua:117: response error 在Lua I2C驱动层发生响应错误,底层通信失败
返回码 ret: 5, status: 1 系统级I/O错误(EIO),表示设备无响应或总线异常
错误代码 BMC.Error.Unknown BMC系统未能明确归类此错误,属于未定义的底层故障

根本原因分析

结合知识图谱数据和搜索结果,可推断出以下根本原因:

1. I²C通信不稳定导致EEPROM访问失败

  • 日志中明确指出:“i2c write fail” 和 “i2c.lua:117: response error”。
  • bmc.kepler.hwdiscovery服务在尝试通过I²C总线访问EEPROM(Eeprom_3_11_010103)时失败。
  • 此类问题常见于:
    • I²C总线时序配置不当(如时钟频率过高)
    • 总线上拉电阻不匹配或驱动能力不足
    • 软件层I²C重试机制缺失或超时设置不合理
  • 版本升级到81.7可能引入了新的I²C参数或驱动逻辑变更,从而暴露了物理层或协议层缺陷。

2. EEPROM数据损坏或读取异常触发BMC.Error.Unknown

  • 知识图谱表明:FRU Data通常存储于EEPROM中(起始于字节128),并用于设备识别和系统配置。
  • 错误日志中“read eeprom header failed”是关键信号,说明BMC无法解析EEPROM中的SR文件。
  • 当BMC尝试读取SR文件失败时,将触发hwdiscovery模块报错,导致设备无法注册到系统对象树。
  • BMC.Error.Unknown是一个通用错误码,表示BMC内部操作未预期失败,通常由底层硬件访问异常引起

3. hwdiscovery服务未能成功加载组件SR文件

  • 搜索结果文档 #3 明确指出:

    “问题根因:无法识别riser卡:eeprom的数据被修改,无法提供正确的在位信号,因此BMC无法加载。”

  • 在qemu仿真文档(#5)中有描述:

    “自发现服务从固定路径读取 root.sr 文件,解析其中的CSR数据……当需访问硬件Eeprom时,实际转向读取对应的Eeprom仿真二进制文件。”

  • 这表明:
    • SR文件决定了Riser卡是否能被正确识别和挂载。
    • 如果EEPROM读取失败,SR文件无法获取 → 设备无法识别 → Riser及插在其上的AI卡均无法加载。

4. 版本差异导致行为变化(81.6 → 81.7)

  • 回退到81.6版本后问题消失,说明:
    • 81.7版本中可能存在以下变更:
      • I²C总线初始化顺序改变
      • EEPROM读取超时时间缩短
      • hwproxyhwdiscovery服务逻辑调整
      • 新增某些校验流程导致容错性下降
  • 特别是General Hardware模块版本若发生变动(如从1.80.55升级),可能影响硬件抽象层行为。

相关实体及依赖关系

graph TD
    A[BMC Firmware 81.7] --> B[bmc.kepler.hwdiscovery]
    B --> C[I2c_4 Bus]
    C --> D[Eeprom_3_11_010103]
    D --> E[Component SR File]
    E --> F[Riser Card Recognition]
    B --> G[FRU Data Retrieval]
    G --> H[Read EEPROM Header Failed]
    H --> I[i2c.lua:117: response error]
    I --> J[BMC.Error.Unknown]
    J --> K[Device Access Failed]
    K --> L[Riser Not Recognized]

解决建议与下一步计划

:white_check_mark: 已验证有效的临时解决方案

  • 回退至bmc_network1.81.6版本:已确认可恢复正常识别,建议作为短期规避措施。

:magnifying_glass_tilted_left: 推荐排查方向

1. 对比81.6与81.7版本间的变更点

  • 分析bmc_network组件的变更日志(git diff),重点关注:
    • hwproxyhwdiscoveryi2c.lua模块
    • I²C总线配置(address width, offset width, retry count等)
    • EEPROM读取超时和重试策略

2. 检查EEPROM设备配置一致性

  • 验证Eeprom_3_11_010103在DTS或配置文件中的定义是否正确:
    {
      "chip": "Eeprom_3_11_010103",
      "bus": "I2c_4",
      "address": 96,
      "offset_width": 1,
      "len": 32
    }
    
  • 检查是否存在地址冲突或地址映射错误。

3. 增强I²C通信鲁棒性

  • 增加I²C读取重试次数(例如从默认1次提升至3~5次)
  • 延长I²C操作超时时间
  • 添加总线恢复机制(如总线锁死检测与reset)

4. 抓取I²C物理层波形

  • 使用示波器或逻辑分析仪抓取I2c_4总线上的SCL/SDA信号:
    • 检查是否存在噪声、毛刺、时序偏离等问题
    • 确认ACK/NACK响应状态

5. 更新或修复CSR/SR文件

  • 若EEPROM内容异常,可通过烧录工具恢复标准SR文件
  • 参照IEU CSR配置指导书生成正确的CSR配置

6. 监控Firmware_MgmtGeneral Hardware模块

  • 检查app.logframework.log中是否有Firmware_Mgmt初始化失败记录
  • 确保General Hardware模块加载正常(其负责硬件信息采集)

总结

项目 内容
问题本质 bmc_network1.81.7版本中I²C通信异常导致EEPROM读取失败,进而引发Riser卡识别失败
直接原因 i2c.lua:117: response errorread eeprom header failedBMC.Error.Unknown
根本原因 软件层面I²C驱动或配置变更 + 硬件层面通信稳定性不足共同作用所致
影响范围 所有挂接在I2c_4总线上的设备(包括Riser及其扩展设备)均可能间歇性失联
解决方案建议 回退版本 + 分析变更 + 优化I²C通信策略 + 验证SR文件完整性

建议责任部门:BMC固件团队联合硬件平台团队协同定位,优先复现问题并比对两个版本的I²C底层实现差异。

你好,请提供下完整的一键收集日志到wangxin570@huawei.com