LCC
(Hkzy_licuncai)
1
在os内注入内存故障,下面是fdm_log的打印:
[Hardware Error Log Number]: 2 Time: 2025-12-23 16:53:06
Collect: IMU(INT) Serial Number: 1 Collect Integrity: Validate(0X00)
Socket: CPU1 DIE: TotemB Module: CPU CORE0 Sub Module: LSU
----------------------- ARER REPORTING ERROR -----------------------
Error Type:Uncorrected error, Signaled or Recoverable error (UER)
SERRCODE: 0X06 (data value from associative memory(ecc error on cache data))
IERRCODE: 0X00 (Undefined)
Arer_Status: Bit(31)ADDRValid Bit(26)MISCValid Bit(28)ErrReport
Arer_Address: 0X8400093F280 [DIMM060](SubChannel 0, Rank 0, LogicalRank 0, BankGroup 0, Bank 0, Device Unknown, Column 1824, Row 295) [TF Segment]
MISC0: CE Counter: 32767; Due to some error, LSU has enter the safe mode before; Bit(29)UE Valid Bit(17:16)Dcache UE Bit(22)L1 Dcache Data RAM Bit(23)pipea Bit(24)Load
MISC1: Error Code Undefined!
----------------------- ARER CPU CORE REGISTER DUMP -----------------------
ERR_FR: 0X00000000001249A2
ERR_CTL: 0X0000000000000505
ERR_STATUS: 0X00000000F4300006
ERR_ADDR: 0X000008400093F280
ERR_MISC0: 0X00007FFFA0400000
ERR_MISC1: 0X0000000000000000
ERR_MISC2: 0X0000000000000000
ERR_MISC3: 0X0000000000000000
但是看DIMM060的属性未变化:
我想请教下不告警的原因是什么?是注入的方式不对还是什么?
BeanLin
(Bean Lin)
2
注错方式错误,你选择的系统地址错误导致注错触发到cache的异常了,可以在OS下执行如下命令选择高地址的内存空间进行注错
cat /proc/iomem | grep System
BeanLin
(Bean Lin)
3
通过cat /proc/iomem | grep System会回显所有有效的系统地址,在高地址(数值大)范围区间选择一个地址,注意保持4K对齐(即最后3个数值需要是000),进行内存注错
LCC
(Hkzy_licuncai)
4
这个注错是有什么特殊的工具吗?还是说直接往内存地址写一个错误的值?
这是测试提供的方式:
insmod /lib/modules/(uname -r)/kernel/drivers/acpi/apei/einj.ko.xz
insmod /root/mem_drv.ko
cd /sys/kernel/debug/apei/einj
echo 0x4 > error_type
echo 1 > error_inject
没看懂,这个要怎么修改注错地址
BeanLin
(Bean Lin)
5
命令含义可通过开源内核Documentation/acpi/apei/einj.txt了解,内存注错的标准动作参考如下:
# cd /sys/kernel/debug/apei/einj
# cat available_error_type # 查看可注入的错误
0x00000002 Processor Uncorrectable non-fatal # 处理器错误
0x00000008 Memory Correctable # 内存CE
0x00000010 Memory Uncorrectable non-fatal # 内存UCE
# echo 0x12345000 > param1 # 设置注入地址,通过cat /proc/iomem | grep System获取地址,注意4K对齐
# echo 0x8 > error_type # 设置注入类型为内存CE
# echo 1 > error_inject # 执行注入
1 个赞
我也遇到没有告警,我看了QA仓库的固件联盟测试,他们有专门的工具注入,不会手动去给/sys注入,我这边注入,很容易挂死,并且BMC无告警
如下是我做的,不过是模板,可以参考,但是不代表有的能注入,只是以前写的一份文档,没有完全修缮,但是步骤是差不多的,就是细节要自己微调了。对于鲲鹏机子,我确实是实操过,真的大部分自己注入搞挂,大概率是不会给BMC产生告警的,甚至fdm也没有。
EINJ 简介与使用指南.pdf (284.7 KB)
system
(system)
关闭
7
由于大量社区举报,此话题被临时关闭至少 4 小时。