【RAS】通过rastool注入cpu uce告警之后,日志有打印,但实际无uce告警产生

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

问题描述

通过rastool工具注入cpu uce告警,日志有打印,但实际无uce告警产生

rastool命令:
./RASTool --Se=1630V100 --E=0x0003 --Pa=0x0 --CPU=0 --Sl=500

fdm_log:

web界面无uce告警:

查看cpu1的DiagnosticFault属性,仍为0:
image

系统实际已宕机:

环境信息

openUBMC 2509

重现步骤

执行rastool命令: ./RASTool --Se=1630V100 --E=0x0003 --Pa=0x0 --CPU=0 --Sl=500
注入cpu uce告警

期望结果

bmc产生uce告警

实际结果

未产生uce告警

尝试过的解决方案

通过einj的方式也没办法产生

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

注入CPU UCE告警未触发BMC告警问题分析与解决方案

问题描述

用户通过RASTool工具命令 ./RASTool --Se=1630V100 --E=0x0003 --Pa=0x0 --CPU=0 --Sl=500 成功向CPU注入了Uncorrected Error(UCE),系统fdm_log日志中也打印了相应的硬件错误信息,但BMC Web界面未上报对应的UCE告警。同时,CPU1DiagnosticFault属性仍为0,且系统随后发生了软锁死(soft lockup)宕机。

该问题发生在 openUBMC 25.09 版本环境中。


问题现象总结

  • :white_check_mark: 工具执行成功RASTool命令注入后输出"Inject Success"。
  • :white_check_mark: 日志记录清晰fdm_log中明确记录了CPU CORE0 L2 Cache Tag Ecc UCE错误。
  • :cross_mark: 告警未生成:WebUI“当前告警”列表中无任何CPU UCE相关告警。
  • :cross_mark: 故障标志位未置位:通过mdbctl getprop CPU_1_010102 bmc.kepler.Systems.Processor.CPU DiagnosticFault 查询结果为0,说明RAS组件未识别为硬件故障。
  • :warning: 系统实际崩溃:内核日志出现soft lockup,表明系统已严重异常。

根本原因分析

结合知识库内容与现场现象,导致“日志有打印但无UCE告警”的根本原因如下:

1. 故障检测与告警上报分离机制失效

根据知识库中关于 bmc.kepler.Systems.FDMDomain.CPURAS 模块和 DiagnosticFault 属性的说明:

| `DiagnosticFault` | `U8` | 只读 | 变更广播 | 硬件预故障标志位默认值为0 |

虽然fdm_log捕获到ARER报错,但该事件未能正确传递给FDM(Fault Detection & Management)模块进行故障认定,进而导致:

  • DiagnosticFault未被置1;
  • BMC Event系统未触发UCE对应的告警事件(如Event_Cpu1UCE_010101)。

这通常表明 RAS事件监听链路中断或配置缺失

2. openUBMC 25.09 存在已知兼容性问题

知识库明确指出:

openUBMC25.09 is an updated version of openUBMC firmware that caused the CPU side to fail detecting the BMC.

该版本升级后存在通信异常与传感器事件处理缺陷。尤其是在从iBMC升级至openUBMC25.09后,多个用户反馈了:

  • 传感器告警不触发;
  • SEL日志不完整;
  • RAS注入无法正确映射到BMC告警系统。

因此,本问题极可能由 openUBMC 25.09 版本RAS事件处理逻辑缺陷引起。

3. CSR配置未正确加载或缺失

搜索结果文档《Event常见问题指南》中指出:

“并非环境中存在SR文件就一定会加载,不加载的话Event就不会有对象,更不会有告警”

若负责CPU UCE告警注册的CSR配置文件未被正确加载:

  • 即使硬件错误被捕获,Event子系统也无法将该事件关联到预定义的告警策略;
  • 导致“无告警产生”。

此外,知识图谱中提到CPU2存在BIOS与BMC对CPU编号解析不一致问题(BMC解析CPU2,BIOS为CPU0/1),也可能影响事件绑定。


解决方案建议

:white_check_mark: 方案一:验证并强制加载CSR配置

确认是否缺少或未激活CPU UCE相关的CSR告警规则。

# 检查是否存在CPU UCE对应的CSR对象
ls /usr/share/kepler/csr/ | grep -i cpu
# 查看是否有 Event_Cpu.*UCE 相关定义文件

参考《Event常见问题指南》建议:

“如果对象都分发完了日志里也没记录告警对象的信息,那只能是没有分发了”

操作建议

  • 联系配置开发确认CSR中是否已定义CPU UCE告警策略;
  • 在系统上电状态下,重新加载并激活相关CSR配置;
  • 重启eventdfdm服务以刷新监听状态。

:white_check_mark: 方案二:升级或回退openUBMC版本

鉴于 openUBMC25.09 已知存在BMC通信及事件处理问题:

openUBMC25.09 is a specific version of BMC firmware used in the upgrade process.
The issue arose after upgrading from iBMC to openUBMC25.09

建议采取以下措施之一:

  • 回退到稳定版本:如 openUBMC 25.06iBMC 5.05.12.25 验证是否能正常上报UCE告警;
  • 升级至修复版本:确认是否有 openUBMC 25.12 或更高补丁版本修复了RAS事件上报问题。

:white_check_mark: 方案三:检查FDM组件运行状态并重启

确保FDM域服务正在运行,并正确监听CPU RAS事件。

# 检查FDMDomain服务状态
systemctl status bmc.kepler.Systems.FDMDomain
# 或查看进程是否存在
ps | grep fdm

若服务异常,尝试重启:

systemctl restart bmc.kepler.Systems.FDMDomain

此操作可能恢复事件链路,使后续注入的UCE能被正确识别。


:white_check_mark: 方案四:使用标准IPMI命令验证事件注册

检查SEL中是否能获取到原始事件条目:

ipmitool sel list

若无任何与CPU错误相关的条目,则问题出在:

  • IMU(Integrated Management Unit)未上报;
  • IPMI Bridge未转发;
  • SDR记录缺失。

建议补充执行:

ipmitool sdr list | grep -i cpu

确认是否存在CPU UCE类型传感器定义。


验证方法

  1. 注入前检查

    mdbctl getprop CPU_1_010102 bmc.kepler.Systems.Processor.CPU DiagnosticFault
    # 应为 0
    
  2. 注入后检查

    • 查看SEL日志有无新增条目;
    • 再次查询DiagnosticFault,预期应变为1
    • WebUI“当前告警”应出现“CPU1 UCE”严重级别告警。
  3. 日志路径检查

    • /var/log/fdm_log
    • /var/log/alarm.log(部分版本归一化至此)
    • dump_info<AppDump>sensor_alarm>eo_sel(用于排查phy报警)

参考资料与社区支持


结论

当前问题并非注入方式错误,而是 openUBMC v25.09 版本中RAS事件链路存在缺陷,导致:

  • CPU UCE错误被fdm_log记录;
  • 但未触发DiagnosticFault置位;
  • 从而BMC Event系统未生成告警。

推荐处理顺序

  1. 重启FDM服务尝试恢复;
  2. 确认CSR配置是否加载
  3. 升级或降级openUBMC固件版本以排除已知缺陷;
  4. 若仍无效,提交日志包至社区进一步分析。

:warning: 注意:在openUBMC生态中,部分RAS功能在开源版本中尚未完全稳定,建议在关键测试场景使用经过验证的正式版本。

相关链接:

  1. 【RAS】在OS注入内存UCE故障后,BMC未告警
  2. openUBMC 630 版本开源组件无法新增新的Customer 内容
  3. 【求助】RASTools工具注错,显示Success。但BMC一键日志FDM日志内容与实际注错不符
  4. 升级到openUBMC后,CPU侧无法检测到对应的BMC的存在
  5. Event常见问题指南 | 文档中心 | openUBMC

L2C模块的SERRCODE=0X07的UER故障,目前不支持默认告警,但提供了资源树原子能力开放

path:/bmc/kepler/Systems/${SystemId}/FDMDomain/CPURAS/${Id}

interfaces:bmc.kepler.Systems.FDMDomain.CPURAS

properties:UncorrectableError

一键收集日志:
HuaKunAT525B2_20260122-1357.z01.txt (8 MB)
HuaKunAT525B2_20260122-1357.zip.txt (3.9 MB)

这条命令输入的是CPU1的错误
./RASTool --Se=1630V100 --E=0x0003 --Pa=0x0 --CPU=0 --Sl=500

CPU2要怎么改?
我把–CPU改成1,但是不行

这样应该就可以了,CPU1的起始核不是0

./RASTool --Se=1630V100 --E=0x0003 --CPU=1 --Sl=500

这条命令触发的还是CPU1


@BeanLin

0x0003只支持注入0核,用这个命令注入CPU2

./RASTool --Se=1630V100 --E=0x0501 --CPU=1

1 个赞

这个命令可以