920BS机型 CPU ras注错 bmc没有记录UCE和CE日志

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

问题描述

使用rastool 工具注错CPU,bmc未记录UCE和CE日志

环境信息

  • 操作系统:[如 Ubuntu 24.04]

  • 软件版本:OpenUBMC2512

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

重现步骤

使用rastool 工具注错CPU,bmc未记录UCE和CE日志

fdm_log.zip (7.9 KB)

期望结果

使用rastool 工具注错CPU,bmc正常记录UCE和CE日志

实际结果

使用rastool 工具注错CPU,bmc未记录UCE和CE日志

尝试过的解决方案

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

分析结论

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

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

总结

当前问题属于 BMC RAS 机制中的事件上报链断裂问题,表现为:

  • 注错成功 :check_mark:
  • 硬件错误被捕获 :check_mark:(IMU 日志)
  • BMC 未生成 SEL 日志与 Web 告警 :cross_mark:

该问题在 OpenUBMC2509 和 OpenUBMC2512 中均有出现,建议升级至 openUBMC 2512LTS 并应用 调试固件包 进行验证。最终需通过 固件修复事件桥接逻辑 来彻底解决。

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

关于920BS机型使用RAS Tool注入CPU错误后BMC未记录UCE/CE日志的问题分析

问题概述

920BS机型 上,使用 RASTool 工具对 CPU 注入硬件错误(如 UCE/CE),BMC 未能生成相应的 Uncorrected Error(UCE)或 Corrected Error(CE)系统日志记录,导致无法通过 BMC 日志进行故障诊断与追溯。


环境信息

  • 操作系统:如 Ubuntu 24.04(待补充)
  • BMC 软件版本OpenUBMC2512
  • 硬件平台:S920X20 / 920BS 机型
  • 测试工具RASTool(Reliability, Availability, and Serviceability Tool)
  • 日志文件fdm_log.zip(已上传,大小 7.9 KB)

重现步骤

  1. 在操作系统环境中部署 RASTool 工具;
  2. 执行如下命令注入 CPU UCE 错误:
    ./RASTool --Se=1630V100 --E=0x0003 --Pa=0x0 --CPU=0 --Sl=500
    
  3. 等待系统响应,并检查以下日志输出:
    • fdm_log 中是否有 CPU 错误相关记录;
    • SEL(System Event Log)中是否记录 UCE/CE 告警;
    • Web UI 当前告警页面是否显示 CPU UCE 告警;
    • 查看 CPU 的 DiagnosticFault 属性值是否发生变化。

期望结果

  • BMC 成功捕获到由 RASTool 注入的 CPU UCE/CE 错误;
  • SEL 日志FDM 日志fdm_log)中记录对应事件;
  • Web 界面产生级别为“严重”或“紧急”的 CPU UCE 告警;
  • 相关属性如 DiagnosticFault 更新为非零状态。

实际结果

  • SEL 日志未记录 CPU UCE/CE 事件
  • FDM 日志中虽有部分硬件错误打印(如硬件错误码),但无明确的 UCE/CE 告警记录
  • Web UI 未上报任何 CPU UCE 相关告警;
  • DiagnosticFault 属性仍为 0,表示 BMC 未识别到硬件故障;
  • 系统可能已宕机,但 BMC 侧未能正确上报事件。

示例截图证据:

  • fdm_log 输出中有 ARER 报告错误(Uncorrected Error, UER),地址有效位(ADDRValid)、错误报告位(ErrReport)已置位;
  • Web 告警列表中无 CPU UCE 告警条目。

相关实体与日志分析

:white_check_mark: BMC 应具备的功能要求

根据知识图谱信息:

  • BMC 是 Baseboard Management Controller,负责监控系统健康状态,包括内存、CPU、电源等;
  • SEL(System Event Log) 是 BMC 维护的核心事件日志,用于持久化记录硬件异常,如 CPU UCE、Memory UCE;
  • RASTool 是用于模拟硬件级错误的测试工具,常用于验证系统的 RAS 能力;
  • CPU UCE Fault 应触发 BMC 生成 SEL 记录并激活告警机制。

:cross_mark: 实际行为偏离预期

  • 尽管 RASTool 命令返回“Success”,且 fdm_log 显示底层硬件检测到了错误(如 IMU 报告 UER),BMC 并未将此事件写入 SEL
  • 存在“日志有打印但无告警”的矛盾现象 —— 表明 FDM 子系统可能捕获了错误,但未上报警告至 SEL 或 Web 层
  • 此问题曾在 OpenUBMC2509 版本中出现类似案例:因 format_msg 函数对 nil 值处理不当,导致日志升级失败;
  • 在 OpenUBMC2512 版本中亦存在该类缺陷,尤其是在内存/处理器错误注入场景下 SEL 不生成记录。

已尝试的解决方案(参考案例)

  1. 更换注入方式:尝试使用 einj(Error Injection)机制注入 CPU UCE,结果同样未能触发告警
  2. 检查 BIOS 配置:确认是否开启 CPU 错误报告功能(如 MCA、CMCI)、IERR 使能状态;
  3. 手动查询 SEL 内容
    ipmitool sel list
    
    结果为空或未见 CPU 相关事件;
  4. 升级至 LTS 版本调试包:使用如 OpenUBMC-25.12.00.01-20251211 001533-debug.zip 进行复测,用于获取更详细日志;
  5. 执行“一键收集 openUBMC 日志”功能:用于提取完整运行日志、操作日志、fdm 日志供分析。

分析结论

项目 分析结果
根本原因 BMC 固件在 OpenUBMC2512 版本中存在 RAS 事件传递链路中断问题:虽然底层 FDM 模块检测到了 CPU UCE 错误(通过 IMU 日志可见),但由于事件上报逻辑缺陷,未将错误转化为 SEL 条目或 Web 告警
触发条件 使用 RASTooleinj 向 CPU 注入 UCE 错误(如 --E=0x0003
影响范围 所有基于 openUBMC2512 构建的系统,尤其在 920BS/S920X20 平台上表现显著
是否为已知问题 :white_check_mark: 是。已有多个社区报告表明:在 OpenUBMC2509/2512 中存在 CPU UCE 注错后 SEL 不记录的问题(参考 ID: 2)
日志链完整性 :cross_mark: 不完整
→ 探测层(IMU):check_mark: → FDM 模块 :check_mark:(部分日志)→ SEL :cross_mark: → Web UI :cross_mark:
可能的根本原因点 - FDM 到 SEL 的事件桥接模块未注册
- SEL 分配策略错误或被清空
- 错误严重等级未达标(需确认 UCE 是否被误判为非致命错误)
- BMC 未正确处理 ARER/CORE 寄存器 dump 并生成诊断事件

解决建议与后续步骤

:white_check_mark: 短期措施

  1. 执行“一键收集 openUBMC 日志”,并提交给技术支持团队;
  2. 使用 ipmitool 或 Redfish API 直接查询 SEL 内容,确认其是否为空:
    ipmitool sel list
    
  3. 检查 /tmp/bmcgo/fetch_component_code.log 等日志中是否存在以下关键词:
    • "UCE Fault"
    • "CPU0 CatErr Effect"
    • "error_inject"
  4. 验证 SEL 是否被意外清除(某些版本在重启或升级后会清空 SEL)。

:white_check_mark: 长期修复建议

  1. 升级至 OpenUBMC 2512 LTS 稳定版本(如 openUBMC 2512LTS)—— 已知比 2509 更稳定;
  2. 启用调试包(如 OpenUBMC_25.12.00.01_20251229_003248_Debug)以增强日志输出;
  3. 推动 BMC 固件修复以下问题
    • 确保 RAS 注错事件能触发 SEL 写入;
    • 验证 DiagnosticFault 属性更新机制;
    • 修复 format_msg 或日志格式化路径中的空指针问题;
  4. 在 Redfish 接口侧支持 SEL 查询与清空功能(已在 roadmap 中,参考 issue #5)。

联系支持

若以上措施无效,请执行以下操作:

  1. 使用 “一键收集 openUBMC 日志” 功能导出日志;
  2. 联系设备厂商的技术支持工程师(Contact Device Vendor’s Technical Support Engineer),提供:
    • 完整日志包;
    • fdm_log 中 ARER 错误码截图;
    • RASTool 执行命令记录;
    • SEL 查询结果。

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


总结

当前问题属于 BMC RAS 机制中的事件上报链断裂问题,表现为:

  • 注错成功 :check_mark:
  • 硬件错误被捕获 :check_mark:(IMU 日志)
  • BMC 未生成 SEL 日志与 Web 告警 :cross_mark:

该问题在 OpenUBMC2509 和 OpenUBMC2512 中均有出现,建议升级至 openUBMC 2512LTS 并应用 调试固件包 进行验证。最终需通过 固件修复事件桥接逻辑 来彻底解决。


:wrench: 下一步重点:验证 SEL 是否可被写入,并确认 FDM 到 SEL 的事件转发规则是否启用。

亲,根据你提供的日志,从5月11日到最近里面全是CPU的错误:

	Line 5722: Socket: CPU1    DIE: TotemB    Module: CPU CORE0    Sub Module: LSU    
	Line 5743: Socket: CPU1    DIE: Nimbus0    Module: DISP_IO_MGMT    
	Line 5762: Socket: CPU1    DIE: Nimbus0    Module: DISP_IO_MGMT    
	Line 5781: Socket: CPU1    DIE: TotemB    Module: CPU CORE0    Sub Module: L2C    
	Line 5802: Socket: CPU1    DIE: TotemB    Module: CPU CORE0    Sub Module: LSU    
	Line 5823: Socket: CPU1    DIE: Nimbus0    Module: DISP_IO_MGMT    
	Line 5842: Socket: CPU1    DIE: Nimbus0    Module: HLLC0   

简单一句注错CPU :nauseated_face: 注入什么错?注错命令是什么?什么时候注错?描述不清建议通过PAE组织线下会议,能有更详细的解答

因文件过大,详细操作步骤和日志见链接

https://www.kdocs.cn/l/cpOCgcjYNGz5

先提供下注错命令吧,我看下是不是参数填的有问题

参考这个帖子的描述提供下注错信息

CPU UCE注错 —未记录事件

BIOS修改

Ce Report Policy=Enabled

Error Inject=Enabled

OS : (openEuler 22.03 (LTS-SP4))

使用注错命令

./RASTool --E=0x0006

系统界面查看dmesg报错日志,OS系统正常

BMC界面查看 当前告警平台无告警,系统事件无记录,传感器事件无记录

你注入的错误不绝对是硬件故障,所以官方固件策略是仅记录fdm_log,不进行告警或传感器事件记录;

但提供资源树的原子能力,可自行适配SR后完成需求:

1.CPURAS类提供属性UncorrectableError:表示对应CPU是否出现UCE故障,注错后置为1,OS重启或上下电后清0;

2.CPURAS类提供属性CurrentPeriodCacheUncorrectableECCErrorCount:表示单次上电运行周期内,对应CPU出现Cache UCE的计数,注错后累+1,OS重启或上下电后清0;

3.CPURAS类提供属性LifeTimeCacheUncorrectableECCErrorCount:表示对应CPU生命周期内,出现Cache UCE的计数,注错后累+1,器件更换后清0;

我看是有配置告警能力的

:grimacing: 请仔细阅读,已经说了不支持告警或传感器事件记录,那么你觉得这个配置的DiagnosticFault还会置为么?有配置!=会触发

那就是注错命令有问题呗,需要注入的错误一定是硬件故障。那么需要怎么优化注错命令来测试bmc记录cpu ce和uce的能力呢?

可以通过注入L2C的UC错误触发

注入l2c_ue 错误,os 卡住,fdm.log 和bmc事件日志都没有记录,是注错命令使用的有问题吗?

请及时Rastool工具的提供方申请使用指导,这部分能力不在BMC!!提问请聚焦BMC问题

简单指导:可以通过RASTool -l看到注错支持的指令集合,一般的L2C的UE是./RASTool –E=0x0002

好的,感谢

好的,一般通过-h和-l选项可以完成基本注错了,后面的其他参数可以不选