[RAS] ECC 注入是否会触发 SPPR 内存隔离?

现象

BIOS 测试在验证 ECC 注入,设置 ECC logging limit 为 3,在连续注入两条 ECC 故障后,BMC 上报了内存隔离的 SEL;

3,2025-11-07 10:21:00,P0_C1_D0_Status,Minor,Memory,Asserted,Correctable ECC logging limit reached
2,2025-11-07 10:20:41,P0_C1_D0_Status,Minor,Memory,Asserted,Spare
1,2025-11-07 10:18:54,Event_Log,Informational,Event Logging Disabled,Asserted,Log area reset/cleared

app log 显示,BMC 触发了 SPPR 机制,进行了内存隔离

2025-11-07 10:18:54.935371 event NOTICE: event_management.lua(639): clear sel completed

2025-11-07 10:20:40.931002 fault_diagnosis NOTICE: fpc_diagnose_ddr5.lua(741): [IFMM]: memory fault diagnosed, final_type: 0001, proba: unknown

2025-11-07 10:20:40.945310 fault_diagnosis NOTICE: soc3_ras.lua(342): fpc_process: need SPPR

2025-11-07 10:20:41.009490 fault_diagnosis NOTICE: mem_isolation_cmd.lua(77): fpc_process: send isolation[1] info to imu success!!!

2025-11-07 10:20:41.029743 fault_diagnosis NOTICE: soc3_ras.lua(527): fpc_process: IsoType = 1, ResponseCode = 1, IsoStatus = 1, FaultType = 6

2025-11-07 10:20:41.133019 chassis NOTICE: led_policy_service.lua(82): get_event_health change to: Minor

2025-11-07 10:20:41.146996 sensor NOTICE: sel_management.lua(693): add sel[{“SensorName”:“P0_C1_D0_Status”,“SensorType”:12,“SelEventType”:111,“SensorNumber”:162,“SelMsgVersion”:4,“GenerateId”:32,“Timestamp”:1762510841,“SelType”:2,“RecordId”:2,“SelData3”:28,“SelData2”:0,“SelData1”:168,“RecordSeq”:63931,“SensorId”:“DiscreteSensor_DIMM010_01010118”,“SubjectName”:“DIMM010”}] successfully, record id is 2

2025-11-07 10:20:41.148153 sensor NOTICE: sensor_instance.lua(318): [DiscreteSensor_DIMM010_01010118] assert an event [event dir: 2]

2025-11-07 10:20:41.161645 redfish NOTICE: alarm.lua(644): received a sel[63931]

2025-11-07 10:20:41.157625 event_policy NOTICE: synchronizer.lua(281): received a sel[63931]

2025-11-07 10:20:41.284559 chassis NOTICE: led_service.lua(445): set SysHealLed state success, current state: 5, Capability: 2

2025-11-07 10:21:00.714064 fault_diagnosis NOTICE: parts_ras.lua(133): BiosReportMemoryRas: Assertion(0x00), EventType(0x08) [ 0x00 0x07 0x00 0x00 0x00 0x00 0x00 0x00]

2025-11-07 10:21:00.780927 fault_diagnosis NOTICE: maintenance_log_limiting.lua(203): System[1], fru_id:CpuBoard1 DIMM010, maintenance_log_id:0 Enable the maintenance log limiting.

2025-11-07 10:21:00.919338 sensor NOTICE: sel_management.lua(693): add sel[{“SensorName”:“P0_C1_D0_Status”,“SensorType”:12,“SelEventType”:111,“SensorNumber”:162,“SelMsgVersion”:4,“GenerateId”:32,“Timestamp”:1762510860,“SelType”:2,“RecordId”:3,“SelData3”:28,“SelData2”:0,“SelData1”:165,“RecordSeq”:63932,“SensorId”:“DiscreteSensor_DIMM010_01010118”,“SubjectName”:“DIMM010”}] successfully, record id is 3

2025-11-07 10:21:00.919853 sensor NOTICE: sensor_instance.lua(318): [DiscreteSensor_DIMM010_01010118] assert an event [event dir: 1]

疑问

1、连续做 ECC 注入触发内存隔离,是否是正常现象?

2、SPPR 机制的触发条件是什么?

1、正常现象,内存隔离由开关控制,只要内存故障模式满足条件且开关打开,就会触发运行时内存隔离用以提升系统运行可靠性;

2、以前内存Cell损坏,整根内存条只有报废。所以内存厂商提出一种叫做Post Packge Repair(PPR)的技术,也叫做Fail Row Address Repair。顾名思义就是封装后还可以修复,可以把损坏的部分行Row,用冗余的行代替。当BMC识别当下内存故障模式为Row故障时且隔离开关使能时触发SPPR隔离;