【求助】RASTools工具注错,显示Success。但BMC一键日志FDM日志内容与实际注错不符

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

RASTools 工具注入PCIe错误后 BMC未记录的可能原因分析

根据您提供的信息,RASTools工具注入PCIe不可纠正错误(UE)后显示“Inject Success”,但在BMC的一键日志中未发现FDM(Fault Detection and Management)告警记录。以下是基于上下文信息的综合性分析和排查建议。


:magnifying_glass_tilted_left: 问题现象总结

  • 工具注入结果:RASTools执行成功,返回“Inject Success”。
  • 预期行为:BMC应捕获到PCIe设备的致命错误(FatalError),并在fdm_log中生成硬件错误日志。
  • 实际现象:BMC的一键日志中无相关FDM告警或硬件错误记录

:puzzle_piece: 根本原因分析与排查方向

1. RASTool注入方式与BMC监控机制不匹配

尽管工具返回成功,但可能注入的是仅触发驱动层处理而未生成AER(Advanced Error Reporting)硬件事件,或未被正确上报至BMC。

:white_check_mark: 关键点

  • BMC通过 bmc.kepler.Systems.PCIeDevices.PCIeDevice.RAS 接口监控 PCIe 设备的 FatalErrorSystemError 等状态。
  • PCIeRASCollector 组件负责收集 PCIe 相关的 RAS 错误(如致命错误、非致命错误)并在 OS runtime 阶段上报。

若注入未引发真实的 AER 寄存器变化或未被 BIOS/BMC 感知,则不会触发 RAS 收集流程。


2. PCIe RAS Collector 未正常运行或加载失败

从知识图谱中可知:

PCIeRASCollector 是一个系统组件,用于在 OS 运行期间收集并报告 PCIe 相关的错误状态

若该组件加载失败或未启用,即使发生错误也无法上报。

:pushpin: 建议排查

  • /var/log/app.logbmc.log 中搜索:
    grep "PCIeRASCollector" /var/log/app.log
    
  • 查看是否有类似 "failed to load""collecting PCIe errors" 的日志条目。

3. 设备未被识别或BDF信息缺失

Write_Pcie_Card_Bdf_To_Bmc 方法由 BIOS 使用,用于将 PCIe 卡的 BDF(Bus, Device, Function)写入 BMC。如果此过程失败,BMC 将无法建立设备上下文,导致即使有错误也无法定位到具体设备对象进行告警

:pushpin: 建议检查

  • bios service 日志中确认是否在启动时打印了 Disk PcieAddrInfo 信息:
    [2025-12-16 09:12:17.778573] Disk PcieAddrInfo: ...
    
  • 检查 bmc.kepler.Systems.PcieAddrInfo 属性是否包含目标 PCIe 设备的 Bus, Device, Function 等信息。

:cross_mark:Pcie_Device fails to find matching PCIe address information for DeviceType 26 类似错误存在,则说明地址映射失败。


4. 目标设备不在BMC监控范围内(未正确加载SR配置)

BMC 需要为每个 PCIe RAID 卡加载对应的 SR(Schema Representation)文件 才能创建 PCIeDevice 对象并启用 RAS 监控。

:pushpin: 建议排查

  • 登录 BMC,检查路径 /opt/bmc/sr/ 是否存在目标 RAID 卡的 SR 文件。
  • app.log 中搜索:
    grep "Component_ComPCIeCard1_0101010D02" /var/log/app.log
    
  • 查看是否有关于 Event_PCIeRAIDCardFault_0101010D02 注册失败的日志,如:

    “failed to access property ‘Component’ of referenced object path”

这类错误通常意味着配置未加载或对象路径无效。


5. 工具注入的目标设备不存在或参数错误

RASTool 命令:

./RASTool --ErrorType=0x32 --PcieDevNum=0x01

其中 --PcieDevNum=0x01 表示 PCIe 设备号为 1,但实际环境中该设备可能:

  • 并非 PCIe RAID 卡;
  • 多CPU场景下需指定 CpuId
  • 未启用 AER 支持;
  • 是虚拟设备或未被枚举。

:pushpin: 建议验证

  • 使用以下命令确认设备是否存在:
    lspci | grep -i raid
    
  • 检查是否启用 AER:
    lspci -s <BDF> -vv | grep -i aer
    

6. FDM策略未配置或被屏蔽

有时即使错误被正确上报,FDM(故障管理模块)可能因策略配置问题未触发告警

:pushpin: 排查方法

  • fdm_log 中搜索其他类型的硬件错误,确认 FDM 模块是否正常工作。
  • 检查是否存在 DiagnosticFault=0PredictiveFault=0 的情况,表明设备健康状态未更新。
  • 检查是否因“Mock模式”、“事件屏蔽”或“License未导入”导致事件被忽略(虽有案例表明与License无关,但仍需确认)。

:white_check_mark: 排查建议清单

步骤 操作 预期输出
1 检查 PCIeRASCollector 是否运行正常 app.log 中有无加载或错误收集日志
2 检查 bmc.kepler.Systems.PCIeDevices.PCIeDevice.RAS.FatalError 是否为1 可通过 Redfish 或 D-Bus 查询
3 确认 Write_Pcie_Card_Bdf_To_Bmc 是否执行成功 BIOS 启动日志中有 Disk PcieAddrInfo 打印
4 检查 /opt/bmc/sr/ 是否存在目标 RAID 卡 SR 文件 存在且正确命名
5 查询 app.log 是否有 Event_PCIeRAIDCardFault 注册失败日志 无报错,或提示缺失组件
6 检查 lspci 输出及设备 AER 支持情况 明确设备存在且支持 AER
7 提供 一键日志 给支持团队 包含 app.log, fdm_log, bmc.log

:paperclip: 参考信息(来自上下文)

  • bmc.kepler.Systems.PCIeDevices.PCIeDevice.RAS 结构包含以下关键属性:
    • FatalError: U8 — 0表示无致命错误,1表示已发生
    • FatalErrorCount: U32 — 致命错误计数器
    • SystemError: U8 — 系统级错误标志
  • Event_PCIeRAIDCardFault_0101010D02 是一个事件,用于上报 PCIe RAID 卡故障,但依赖于底层对象属性可访问
  • UnknownPCIeRASCollector 负责收集未知 PCIe 设备的错误,可用于诊断未识别设备的异常

:envelope: 结论与建议

工具显示 Success 不代表 BMC 收到了真实的硬件错误事件

请优先执行以下操作:

  1. :white_check_mark: 确认目标 PCIe RAID 卡已被 BMC 正确识别(SR 加载、BDF 正确、出现在 PcieAddrInfo 中)
  2. :white_check_mark: 检查 PCIeRASCollector 是否运行正常
  3. :white_check_mark: 查阅 app.logfdm_log 确定错误是否被采集但未告警
  4. :white_check_mark: 提供完整的 一键日志 给平台支持人员进一步分析(参考 OpenUBMC_Assistant 在社区中的支持流程)

如有需要,可使用 iTestSmart 工具执行标准用例测试,并附带 Tool Log 进行深度定位。


:pushpin: 相关文档参考:

  • 《openUBMC Qemu特性设计说明书》支持RAID卡仿真测试
  • 《Event常见问题指南》提供事件生命周期排查流程
  • BMC Studio 可用于查看 CSR 配置与接口映射是否正确

如仍无法定位,请将一键日志发送至技术支持邮箱。

相关链接:

  1. 【RAS】在OS注入内存UCE故障后,BMC未告警
  2. SAS/SATA硬盘信息未显示
  3. raid卡适配出现问题
  4. scr中使用同步语法的一个注意事项
  5. 【persistence】问题定位方法&FAQ | 文档中心 | openUBMC