【300I A2】MCU降级测试,必现升级提示升级失败

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

问题描述

MCU版本从25.55.28->25.55.23

刚开始提示一个升级失败,然后又正常升级了

在BMC日志中有升级失败相关日志:

环境信息

2512 LTS SP1

重现步骤

正常升降级

期望结果

正常升级,无其他异常信息

实际结果

升级提示升级失败,但后续又正常升级

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

日志文件:
dump_info.zip (8.2 MB)
dump_info.z01.txt (9 MB)

答案内容由AI生成,仅供参考:
根据您的要求,我进行了提取。回答内容中没有明确标有“问题总结”或“结论”字样的章节(例如“### 问题总结”或“### 结论”),但包含一个“### 结论与建议”章节。由于指令要求“原样提取‘总结’,‘解决方案’或‘结论’章节的内容”,且“结论与建议”中包含“结论”字样,因此将其提取如下:

结论与建议

分析结论:
这是一个 必现的软件流程问题。该问题与 NPUCardMcu 的版本 无关(无论是从高版本降级还是低版本升级都可能触发),其根本原因在于 hk_upgrade_subject.luaupgrade_subject.lua 脚本未能正确初始化或找到处理 NPUCardMcu 升级的闭源观察者组件 (observer)

虽然最终会因内部的容错重试机制升级成功,但“升级失败”的短暂提示是 一个错误,而非预期行为,会给用户造成困惑。

建议:

  1. 提交Bug/Issues: 向 OpenUBMC 社区或固件提供商提交此问题。关键信息包括:
    • 系统环境:2512 LTS SP1
    • 硬件型号:Atlas 300I A2
    • 重现步骤:进行 NPUCardMcu 固件升降级操作。
    • 核心日志:提供上述包含 on_upgrade_process does not exists the observer, control.lua(205): Upgrade NPUCardMcu process failed, ret=-1 等关键报错的日志。
  2. 定位修复: 开发人员需要检查 hk_upgrade_subject.luaupgrade_subject.lua 等文件,确认 observer 的注册和查找逻辑是否存在条件竞争或初始化顺序问题,确保在升级任务开始前,其对应的处理组件已就绪。
点击此处查看详细分析解答

感谢您提供的问题详情。根据提供的 Context 信息,我对您遇到的 【Atlas 300I A2】MCU降级测试过程中,必现升级提示失败,但后续又正常升级 的问题分析如下。

问题概述与现象

在将 NPUCardMcu 的固件版本从 25.55.28 降级到 25.55.23 时,通过 OpenUBMC 的 Web 界面操作,会出现以下几个关键现象:

  1. 初始失败提示: 升级过程启动后,Web 界面会显示 NPUCardMcu 的升级状态为“升级失败”,进度停留在 95%。
  2. 自动恢复并成功: 大约 3 秒后,升级过程会自动重新开始,并最终成功完成,升级进度从 0% 开始,直到 100%。
  3. 日志记录: 在 BMC 的系统日志中,明确记录了与升级失败相关的错误信息。

详细根因分析 (基于 Context)

根据提供的 Context(包含知识图谱和文档片段),这个问题的根本原因可以归结为 升级过程中的闭源组件 (observer) 缺失问题

1. 核心错误:on_upgrade_process 找不到观察者 (observer)

系统日志中反复出现的核心错误信息是:

  • hk_general_hardware ERROR: hk_upgrade_subject.lua(54): [on_upgrade_process] does not exists the observer, firmware_type:NPUCardMcu
  • general_hardware ERROR: upgrade_subject.lua(135): [on_upgrade_process] does not exists the observer, firmware_type:NPUCardMcu

这表明,当升级流程进入关键的处理阶段(PROCESS)时,用于管理 NPUCardMcu 物理升级的 闭源观察者组件(observer) 未能被找到或初始化。

2. 故障流程解析

从日志的时间线和流程来看,升级失败的过程如下:

  • 22:13:28.067: 系统开始处理 NPUCardMcu 的升级任务,但立即因为找不到 observer 而报错(log 618, 619)。
  • 22:13:28.175: control.lua 脚本尝试执行升级,返回错误代码 ret=-1 (log 622),标志 NPUCardMcu 进程失败。Web 界面因此显示“升级失败”。
  • 22:13:28.375: 系统自动进入重试逻辑,重新创建一个新的升级任务(新的 Task ID: 33282873753),尝试使用 Firmware2 固件包进行升级 (log 629)。
  • 后续重试: 后续又继续尝试了 Firmware3Firmware4 等不同配置的固件包,但均因为同样的 observer 不存在的问题而失败。

3. 为何最终又会升级成功?

关键点在于,初始的几次失败是内部重试机制的产物,并且是在极短的时间内(约3秒)完成的。根据 MCU降级测试 的描述,这一连串的内部重试失败被Web UI捕捉,显示为短暂的“升级失败”。

在内部重试尝试了所有可用的配置(如 Firmware1, Firmware2, Firmware3…)后,系统可能触发了某种 降级或回退逻辑,绕过了有问题的闭源 observer 组件检查,或者该组件在此时被成功加载,从而使得后续的升级能够顺利进行。

结论与建议

分析结论:
这是一个 必现的软件流程问题。该问题与 NPUCardMcu 的版本 无关(无论是从高版本降级还是低版本升级都可能触发),其根本原因在于 hk_upgrade_subject.luaupgrade_subject.lua 脚本未能正确初始化或找到处理 NPUCardMcu 升级的闭源观察者组件 (observer)

虽然最终会因内部的容错重试机制升级成功,但“升级失败”的短暂提示是 一个错误,而非预期行为,会给用户造成困惑。

建议:

  1. 提交Bug/Issues: 向 OpenUBMC 社区或固件提供商提交此问题。关键信息包括:
    • 系统环境:2512 LTS SP1
    • 硬件型号:Atlas 300I A2
    • 重现步骤:进行 NPUCardMcu 固件升降级操作。
    • 核心日志:提供上述包含 on_upgrade_process does not exists the observer, control.lua(205): Upgrade NPUCardMcu process failed, ret=-1 等关键报错的日志。
  2. 定位修复: 开发人员需要检查 hk_upgrade_subject.luaupgrade_subject.lua 等文件,确认 observer 的注册和查找逻辑是否存在条件竞争或初始化顺序问题,确保在升级任务开始前,其对应的处理组件已就绪。

可以用330的sdk试一下还有没有这个问题