内存CE注错不产生告警

问题描述

SR配置(其它memory做类似配置):

"MemoryRAS_1": {
            "SystemId": "${SystemId}",
            "Name": "<=/Memory_1.DimmName",
            "LogicalCpuId": "${Slot} |> expr(($1 % 2 == 0) ? 1 : 0)",
            "LogicalChannelId": 0,
            "DimmId": 0,
            "PredictiveFault": 0,
            "ConfigErrorType": 0,
            "ConfigErrorCode": "",
            "UncorrectableECCError": 0,
            "CorrectableECCError": 0,
            "CorrectableECC": 0,
            "PoorContactFault": 0,
            "CorrectableECCStorm": 0,
            "CorrectableECCOverflow": 0,
            "SerialNumber": "<=/Memory_1.SerialNumber"
        },
        "Event_MemoryRAS1CE": {
            "EventKeyId": "Memory.MemoryCEHardFailure",
            "Condition": 1,
            "LedFaultCode": "000",
            "BelongsToSystem": true,
            "Reading": "<=/MemoryRAS_1.PredictiveFault",
            "OperatorId": 5,
            "Enabled": true,
            "DescArg3": "#/Component_Memory1.Name",
            "Component": "#/Component_Memory1"
        },

FDM日志:

\[Hardware Error Log Number\]: 15    Time: 2019-09-13 14:26:12
Collect: IMU(INT)    Serial Number: 0    Collect Integrity: Validate(0X00)
CPU: 0(Socket: CPU1)    DIE: TotemB    Module: L3D Bank2    
----------------------- ARM ARER REPORTING ERROR -----------------------
Error Type:Uncorrected error, Latent or Restartable error (UEO)
SERRCODE: 0X01 (User defined error(err_ns/err_read/err_write/err_thr/err_mode/err_rsv/err_memattr))
IERRCODE: 0X03 (illegal security attribute error)
Arer_Status: Bit(31)ADDRValid    Bit(26)MISCValid    Bit(27)OverFlow    
Arer_Address: 0XE00000000002F00E \[Not physical address\]
MISC0: CE Counter: 0; 
MISC1: Request Error!
----------------------- ARM ARER L3D REGISTER DUMP -----------------------
ERR_FR: 0X0000000000042AA2
ERR_CTL: 0X00000000FFFFFFF7
ERR_STATUS: 0X00000000EC200301
ERR_ADDR: 0XE00000000002F00E
ERR_MISC0: 0X00000000009C0000
ERR_MISC1: 0X0000125210080081
RASC_ADDR: 0X0000000000000000
RASC_INTMSK: 0X00000000
RASC_RINT: 0X00000000

\[Hardware Error Log Number\]: 16    Time: 2019-09-13 14:35:01
Collect: IMU(INT)    Serial Number: 0    Collect Integrity: Validate(0X00)
CPU: 0(Socket: CPU1)    DIE: TotemB    Module: L3D Bank2    
----------------------- ARM ARER REPORTING ERROR -----------------------
Error Type:Uncorrected error, Latent or Restartable error (UEO)
SERRCODE: 0X01 (User defined error(err_ns/err_read/err_write/err_thr/err_mode/err_rsv/err_memattr))
IERRCODE: 0X03 (illegal security attribute error)
Arer_Status: Bit(31)ADDRValid    Bit(26)MISCValid    Bit(27)OverFlow    
Arer_Address: 0XE00000000002F00E \[Not physical address\]
MISC0: CE Counter: 0; 
MISC1: Request Error!
----------------------- ARM ARER L3D REGISTER DUMP -----------------------
ERR_FR: 0X0000000000042AA2
ERR_CTL: 0X00000000FFFFFFF7
ERR_STATUS: 0X00000000EC200301
ERR_ADDR: 0XE00000000002F00E
ERR_MISC0: 0X00000000009C0000
ERR_MISC1: 0X0000125210080081
RASC_ADDR: 0X0000000000000000
RASC_INTMSK: 0X00000000
RASC_RINT: 0X00000000

\[Hardware Error Log Number\]: 17    Time: 2019-09-13 14:44:51
Collect: IMU(INT)    Serial Number: 1    Collect Integrity: Validate(0X00)
CPU: 0(Socket: CPU1)    DIE: TotemA    Module: DDRC3    
----------------------- ARM ARER REPORTING ERROR -----------------------
Error Type:At least one error was corrected.(CE)
SERRCODE: 0X0C (Refer to IERRCODE)
IERRCODE: 0X0F (HA access correct error.)
Arer_Status: Bit(31)ADDRValid    Bit(27)OverFlow    
Rasc_Address: 0XFF00100004000000 \[DIMM070\](Rank 0, BankGroup 0, Bank 0, Device 0, Column 0, Row 4096)
Error DQ: DQ0 DQ1 DQ2 DQ3 
Rank CE counter: 1    Memory temperature: 255.255 degree Celsius
Current fault device: 0
----------------------- ARM ARER DDRC REGISTER DUMP -----------------------
ERR_FR or DQ_Low: 0X000000000000000F
ERR_CTL or DQ_High: 0X8000000000000000
ERR_STATUS: 0X00000000CA000F0C
ERR_ADDR: 0X0000000040000000
ERR_MISC0: 0X0000000000000000
ERR_MISC1: 0X0000000000000000
RASC_ADDR: 0XFF00100004000000
RASC_INTMSK: 0X00000100
RASC_RINT: 0X00000005
Bit Position: 0X0000
Temperature: 0XFFFF
RASC_HIS_HA_RANKCNT: 0X00000001
RASC_HIS_CORR_RDATA: 0X00000000
RASC_HIS_CORR_EXPDATA: 0X00000000
RASC_HIS_UNCORR_RDATA: 0X00000000
Target ID: 0X0000000000000000
Min_Hamm_Distance: 0X00

\[Hardware Error Log Number\]: 18    Time: 2019-09-13 14:44:51
Collect: IMU(INT)    Serial Number: 2    Collect Integrity: Validate(0X00)
CPU: 0(Socket: CPU1)    DIE: TotemA    Module: DDRC3    
----------------------- ARM ARER REPORTING ERROR -----------------------
Error Type:At least one error was corrected.(CE)
SERRCODE: 0X0C (Refer to IERRCODE)
IERRCODE: 0X0B (HA access correct error more than threshold)
Arer_Status: Bit(31)ADDRValid    
Rasc_Address: 0XFF00100004000000 \[DIMM070\](Rank 0, BankGroup 0, Bank 0, Device 0, Column 0, Row 4096)
Error DQ: DQ0 DQ1 DQ2 DQ3 
Rank CE counter: 1    
Worst device: 0
----------------------- ARM ARER DDRC REGISTER DUMP -----------------------
ERR_FR or DQ_Low: 0X000000000000000F
ERR_CTL or DQ_High: 0X8000000000000000
ERR_STATUS: 0X00000000C2000B0C
ERR_ADDR: 0X0000000040000000
ERR_MISC0: 0X0000000000000000
ERR_MISC1: 0X0000000000000000
RASC_ADDR: 0XFF00100004000000
RASC_INTMSK: 0X00000100
RASC_RINT: 0X00000000
Bit Position: 0X0000
Temperature: 0X0000
RASC_HIS_HA_RANKCNT: 0X00000001
RASC_HIS_CORR_RDATA: 0X00000000
RASC_HIS_CORR_EXPDATA: 0X00000000
RASC_HIS_UNCORR_RDATA: 0X3DF96FDD
Target ID: 0X0000000000000000
Min_Hamm_Distance: 0X00

app.log:

2019-09-13 14:31:27.628239 fault_diagnosis NOTICE: storm.lua(286): reset storm database!
2019-09-13 14:31:27.930162 fault_diagnosis NOTICE: power_state.lua(101): system[1] reboot restore fdm to default.
2019-09-13 14:34:14.007931 fault_diagnosis NOTICE: power_state.lua(119): system1 bios_start_complete = false, smbios_state = 0
2019-09-13 14:34:14.045291 fault_diagnosis NOTICE: power_state.lua(119): system1 bios_start_complete = false, smbios_state = 1
2019-09-13 14:34:14.483149 fault_diagnosis NOTICE: power_state.lua(119): system1 bios_start_complete = true, smbios_state = 3
2019-09-13 14:44:51.566424 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 14:47:10.777282 fault_diagnosis NOTICE: init.lua(79): register to bus for class, error name: kepler.class.ClassNotDefined
2019-09-13 14:47:14.006981 fault_diagnosis NOTICE: fdm_dump.lua(97): per_temporary.db dump completed
2019-09-13 14:47:14.023947 fault_diagnosis NOTICE: fdm_dump.lua(97): per_reset.db dump completed
2019-09-13 15:13:23.156392 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:13:23.553590 fault_diagnosis NOTICE: fpc_diagnose.lua(566): [IFMM]: memory fault diagnosed, final_type: 0001
2019-09-13 15:13:23.558538 fault_diagnosis NOTICE: soc2_ras.lua(207): fpc_process: need pageoffline
2019-09-13 15:13:23.561174 fault_diagnosis NOTICE: soc2_ras.lua(68): fpc_process: pageoffline switch is disable
2019-09-13 15:13:25.137306 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:13:27.042725 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:13:35.375230 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:13:37.128656 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:14:17.195745 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:15:17.887254 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:15:38.761010 fault_diagnosis NOTICE: fpc_diagnose.lua(566): [IFMM]: memory fault diagnosed, final_type: 8000
2019-09-13 15:15:38.770743 fault_diagnosis NOTICE: soc2_ras.lua(207): fpc_process: need pageoffline
2019-09-13 15:15:38.772748 fault_diagnosis NOTICE: soc2_ras.lua(68): fpc_process: pageoffline switch is disable
2019-09-13 15:15:58.477558 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:16:39.064112 fault_diagnosis NOTICE: parts_ras.lua(137): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00]
2019-09-13 15:16:59.931257 fault_diagnosis NOTICE: fpc_diagnose.lua(566): [IFMM]: memory fault diagnosed, final_type: 0001
2019-09-13 15:16:59.934927 fault_diagnosis NOTICE: soc2_ras.lua(207): fpc_process: need pageoffline
2019-09-13 15:16:59.936906 fault_diagnosis NOTICE: soc2_ras.lua(68): fpc_process: pageoffline switch is disable

环境信息

  • 软件版本:OpenUBMC2512SP1

  • 硬件配置:鲲鹏920模组

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

结论

根据你提供的 SR 配置和日志,内存 CE 注错后不产生告警,优先检查告警事件的触发属性是否绑定错误:
Event_MemoryRAS1CE 当前的 Reading 绑定的是 <=/MemoryRAS_1.PredictiveFault,而不是 CorrectableECC、CorrectableECCError、CorrectableECCOverflow 等 CE 相关字段。
因此,即使 CE 注错后底层识别到 CE 并更新了相关 CE 字段,该事件读取的仍是 PredictiveFault,不会因 CE 注错而满足触发条件。

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

结论

根据你提供的 SR 配置和日志,内存 CE 注错后不产生告警,优先检查告警事件的触发属性是否绑定错误:
Event_MemoryRAS1CE 当前的 Reading 绑定的是 <=/MemoryRAS_1.PredictiveFault,而不是 CorrectableECC、CorrectableECCError、CorrectableECCOverflow 等 CE 相关字段。
因此,即使 CE 注错后底层识别到 CE 并更新了相关 CE 字段,该事件读取的仍是 PredictiveFault,不会因 CE 注错而满足触发条件。


关键依据

1. SR 中告警事件触发源不匹配

你提供的配置中:

  • MemoryRAS_1 定义了多个 CE 相关字段:
    • CorrectableECC
    • CorrectableECCError
    • CorrectableECCOverflow
    • CorrectableECCStorm
  • 但 Event_MemoryRAS1CE 的 Reading 为:
"Reading": "<=/MemoryRAS_1.PredictiveFault"

也就是说,该事件监控的是 PredictiveFault,不是 CE 字段。
内存 CE 注错通常不会改变 PredictiveFault,因此该事件不会产生告警。

2. FDM 日志已识别到 DDRC3 CE

日志中可以看到 DDRC3 的 CE 记录:

Error Type:At least one error was corrected.(CE)
...
Rank CE counter: 1

后续日志还出现:

IERRCODE: 0X0B (HA access correct error more than threshold)

这说明底层已经识别到内存 CE 或 CE 超阈值事件,但“底层识别到 CE”与“上层产生告警”之间还依赖 SR 事件配置的条件匹配。

3. app.log 中未见对应告警生成记录

提供的 app.log 中可见:

BiosReportMemoryRas: Assertion(0x00), EventType(0x08)

但未见 Event_MemoryRAS1CE 对应的告警生成记录。
这与 SR 中事件读取 PredictiveFault 而不是 CE 字段的情况相吻合。


为什么 CorrectableECCError 也不变化

上下文中对 CE 相关字段的语义说明如下:

  • CorrectableECC:表示内存已经发生过 CE 错误,BMC 单次收到内存的 CE 错误 IPMI 消息即可置位。
  • CorrectableECCOverflow:表示具体内存已经发生 CE 错误超阈值事件,阈值和计数在 BIOS 选项配置和统计。
  • CorrectableECCError:表示第 3 次 CE 超阈值后触发 BIOS 执行 Bank 替换事件,执行方也在 BIOS。

上下文中还给出了:

Correct Error Threshold 3
Funnel Time 60

因此,CorrectableECCError 不是单次 CE 就置位的字段,而是需要达到“第 3 次 CE 超阈值”后才由 BIOS 触发 Bank 替换。
你日志中 DDRC3 的 Rank CE counter: 1,并未体现累计到第 3 次超阈值,所以 CorrectableECCError 不变化是符合其定义的。


处理建议

1. 明确要产生哪一类告警

不同告警目标应绑定不同字段:

  • 单次 CE 告警:应关注 CorrectableECC
  • CE 超阈值告警:应关注 CorrectableECCOverflow
  • 第 3 次 CE 超阈值 / BIOS Bank 替换相关告警:应关注 CorrectableECCError
  • CE 风暴告警:应关注 CorrectableECCStorm

当前 Event_MemoryRAS1CE 的 Reading 指向 PredictiveFault,与 CE 告警目标不匹配,需要核对并调整事件触发属性。

2. 参考 Event_MemoryRAS1ECCMntr 的触发条件

上下文中说明,Event_MemoryRAS1ECCMntr 使用 CorrectableECCError 作为触发条件。
因此,如果需要基于 CE 错误触发告警,应核对 Event_MemoryRAS1CE 是否应绑定 CorrectableECCError,或改用/参考 Event_MemoryRAS1ECCMntr 的配置方式。

3. 区分 CE 注错与 UCE 告警

上下文指出:

  • 使用 ./RASTool --E=0x1f --Sy=0x5fbf0000 注入 CE 故障,无法触发 0x01000017 UCE 告警。
  • 如果希望触发 UCE,可以尝试使用 --E=0x20。

因此,如果你期望的是 UCE 告警,不应使用 CE 注错来验证。

4. CE 风暴事件需确认版本

上下文中还提到,CE storm 事件已在社区版本去除。
如果产品需要 CE storm 告警,需要确认当前产品版本是否包含该事件,并及时同步社区代码。


验证要点

建议按以下顺序验证:

  1. CE 注错后检查 MemoryRAS_1.CorrectableECC 是否置位。
  2. 检查 CorrectableECCOverflow 是否在超阈值后变化。
  3. 按 Correct Error Threshold 3、Funnel Time 60 重复 CE 注错,观察第 3 次超阈值后 CorrectableECCError 是否变化。
  4. 检查 Event_MemoryRAS1CE.Reading 是否已指向正确的 CE 字段。
  5. 如果验证 UCE 告警,改用 UCE 注错参数,而不是 CE 注错。