电源线插入时,产生0x0300006A告警后又很快解除

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

问题描述

电源线插入时,产生0x0300006A告警后又很快解除

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:[如 OpenUBMC2509] power_mgmt/1.70.178版本

  • 硬件配置:[如 CPU、内存等]

重现步骤

  1. 拔掉电源线

  2. 插入电源线

  3. 查看事件日志

期望结果

无异常告警事件

实际结果

电源线插入时,产生0x0300006A告警后又很快解除

尝试过的解决方案

分析结论

这两个告警reading来源为CMLStatus属性

事件产生时日志

image

image

看修改记录似乎与先前的提交有关,修复拔插电源线出现电源误告警-power_mgmt-AtomGit | GitCode

一键日志

J353G4_21_20260402-0750.tar.gz (9.2 MB)

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

结论

  • 本次 0x03000069 告警的出现是 PSU 上电过程中通信状态暂态不稳定 导致的合理响应;
  • 其快速恢复说明 PSU 实际运行正常,无硬件故障
  • 但由于告警机制未区分“启动阶段”与“运行阶段”,导致短暂误报
  • 建议通过配置去抖、延迟告警触发时间或升级至更优版本 firmware/power_mgmt 组件来规避此类瞬态告警,提升用户体验与告警可信度。
点击此处查看详细分析解答

电源线插入时产生 0x0300006A 告警后快速解除问题分析

问题描述

在插入电源线时,系统短暂产生事件码为 0x0300006A(或界面显示为 0x0300069)的告警:

PSU 2 has major error (Inner Communication Error) (SN:2102314VNRJ)

该告警在短时间内自动解除(deasserted),同时伴随 0x0300000D 类似告警(AC/DC 输入丢失)被触发和恢复。此现象虽未造成最终功能异常,但影响告警准确性与运维判断。


环境信息

  • 软件版本:OpenUBMC,power_mgmt/1.70.178
  • 硬件配置:包含多个 PSU 槽位的服务器平台(明确检测到 PSU2 插入动作)
  • 事件码0x03000069(内部通信错误告警,实际 UI 可能显示为 0x0300069

注:根据日志及配置分析,0x03000069 是标准事件码,部分前端界面可能存在格式化偏差。


故障重现步骤

  1. 拔掉 PSU2 的电源线;
  2. 重新插入 PSU2 电源线;
  3. 查看系统事件日志;
  4. 观察到以下顺序行为:
    • 触发 0x0300000D:AC/DC 输入丢失 → Asserted
    • 触发 0x03000069:Inner Communication Error → Asserted
    • 数秒内两条告警均被 Deasserted

分析结论

:white_check_mark: 核心机制定位:告警来源于 CMLStatus 属性与 IPOK 协同判断

根据提供的 CSR 配置信息,该告警由以下表达式驱动:

Reading = expr($1 == 1 ? ($2 & 2) : 0)
其中:
- $1 = /Scanner_PsuIPOKStatus.Value
- $2 = /OnePower_0.CMLStatus

并结合 OperatorId=5(表示“等于 Condition”),Condition 设置为 2。

这意味着:

只有当 IPOK 正常($1 == 1)且 CMLStatus 的 bit1 被置位(即值 & 2 ≠ 0)时,才会触发 Inner Communication Error 告警。


:magnifying_glass_tilted_left: 告警产生原因:PSU 上电初期通信状态不稳定导致瞬态误报

电源插入瞬间,PSU 尚未完成完整上电流程,各信号存在时序延迟,具体如下:

阶段 IPOK 状态 CMLStatus 状态 行为
初始插入 0(未就绪) 不稳定/残留旧值 表达式不触发(因 $1=0)
PSU 开始工作 1(置位) 仍含错误标志(bit1=1) 表达式输出 2 → 触发告警
PSU 稳定运行 1 CMLStatus 正常(bit1=0) 输出 0 → 告警自动清除

因此,告警之所以“短暂出现又快速消失”,是由于:

  • IPOK 先于 PSU 内部通信状态稳定:IPOK 上升表示电源已输出主电压,但其内部 PMBus 通信可能仍处于初始化阶段;
  • CMLStatus 暂时反映异常状态:CMLStatus 是从 PSU 读取的状态寄存器,上电过程中可能短暂上报通信故障标志;
  • 当 PSU 完全初始化完成后,CMLStatus 恢复正常,告警解除。

:pushpin: 相关实体和事件链分析(来自知识图谱与文档)

:white_check_mark: 关联实体

  • OnePower_0.CMLStatus:表示电源模块的通信链路状态,用于检测 PSU 内部通信是否正常。
  • Scanner_PsuIPOKStatus.Value:来自硬件扫描器,代表电源是否处于“Power Good”状态。
  • Event_InnerCommFault:定义了基于上述两个信号组合的事件规则。
  • AC/DC Input of PSU 2 is lost or out-of-range (0x0300000D):与当前事件并行触发的基础电源输入状态告警。

:white_check_mark: 日志印证(来自您提供的截图)

[Event_InnerCommFault_01010B] generate an event [assert] while Reading change to [2]

表明表达式的计算结果变为 2,满足告警条件,触发了事件。


可能原因与改进方向

:red_exclamation_mark: 本质问题:当前表达式未考虑 PSU 上电过程中的暂态过渡期

配置逻辑虽然正确,但缺乏对 “上电初期容忍短暂通信异常” 的设计,导致将正常启动过程误判为故障。

:white_check_mark: 解决建议

方案一:【推荐】增加启动延迟或去抖滤波机制

  • /OnePower_0 初始化过程中引入“静默期”(如 10 秒),在此期间屏蔽 CMLStatus 相关告警;
  • 或在事件判断中引入 Debounce Time(例如延迟 3 秒判断是否持续满足条件);
  • 实现方式可通过 SR 文件配置或 Lua 脚本控制。

方案二:优化事件表达式,仅在 IPOK 稳定后才启用 CMLStatus 判断

-- 示例逻辑(伪代码)
if IPOK == 1 and stable_time > 5s then
    return (CMLStatus & 2)
else
    return 0 -- 不触发告警
end

方案三:升级 power_mgmt 组件至最新版本

参考类似问题历史记录:

power_mgmt/1.70.162@openubmc 版本中曾存在“电源拔插后未重新生成输入告警”的问题,后续版本已修复。

您当前使用的 power_mgmt/1.70.178 虽较新,但仍可能存在此类边缘场景未覆盖。建议确认该版本是否已包含以下修复:

  • 上电期间 PSU 通信状态误报抑制;
  • 通信状态变化的边缘处理优化;
  • 是否启用 PowerGood 稳定后再开始健康检查。

结论

  • 本次 0x03000069 告警的出现是 PSU 上电过程中通信状态暂态不稳定 导致的合理响应;
  • 其快速恢复说明 PSU 实际运行正常,无硬件故障
  • 但由于告警机制未区分“启动阶段”与“运行阶段”,导致短暂误报
  • 建议通过配置去抖、延迟告警触发时间或升级至更优版本 firmware/power_mgmt 组件来规避此类瞬态告警,提升用户体验与告警可信度。

参考依据(来自 Context)

  1. Event_InnerCommFault 的 CSR 配置明确指出其基于 /Scanner_PsuIPOKStatus.Value/OnePower_0.CMLStatus 的组合判断;
  2. Document Chunk #5 显示 OnePower_0.CommunicationStatus 的监听机制由 psu.lua 控制,可通过脚本调整;
  3. Document Chunk #2 提及 PowerGood.Value = 0 表示电源未稳定,可用于判断启动阶段;
  4. AC/DC Input of PSU 2 is lost or out-of-range(0x0300000D)与当前事件共现,符合电源插入过程的典型事件链。

对,可以最新版本再试一下,看是否还出现