CentOS Stream 10下EINJ无法找到available_error_type文件求助
问题描述
在搭载Intel Xeon Gold 6240R的系统上运行CentOS Stream 10,尝试使用EINJ工具时遇到以下问题:
- 按文档说明,应在
<debugfs挂载点>/apei/einj下找到available_error_type文件,但实际不存在 - 系统内核版本为
6.12.0-32.el10.x86_64,dmesg及ACPI表显示BIOS支持EINJ,内核已启用CONFIG_ACPI_APEI_EINJ等相关配置,且已挂载debugfs - 执行
modprobe einj及modprobe einj param_extension=on后,lsmod显示模块已加载,但目标文件仍不存在 - dmesg报错:
[ 918.549253] EINJ: Error collecting EINJ resources.
[ 918.549272] acpi-einj acpi-einj: probe with driver acpi-einj failed with error -22 - 此前有固件bug提示:
[ 12.505110] [Firmware Bug]: APEI: Invalid physical address in GAR [0x0/0/0/0/0]
- 加载
cxl_core和cxl_acpi模块无改善
作为新手,想了解操作哪里出错,EINJ需要哪些资源?
问题分析与解决建议
核心问题根源
你遇到的-22错误(EINVAL)和固件GAR地址无效的提示,说明BIOS/UEFI固件的APEI EINJ配置存在缺陷,这是导致EINJ驱动无法正常初始化、debugfs文件无法生成的主要原因。
操作排查(你没做错的部分)
你已经完成了EINJ使用的基础必备操作:
- 确认内核启用了
CONFIG_ACPI_APEI_EINJ及相关依赖(如CONFIG_ACPI_APEI) - 正确挂载了debugfs(通常挂载到
/sys/kernel/debug) - 成功加载了einj模块及扩展参数
EINJ正常工作所需的核心资源
EINJ依赖以下组件协同工作:
- BIOS/UEFI固件支持:必须正确实现ACPI EINJ表(Error Injection Table),并提供有效的GAR(Generic Address Structure)地址用于错误注入的硬件寄存器访问
- 内核配置:启用
CONFIG_ACPI_APEI、CONFIG_ACPI_APEI_EINJ,部分场景可能需要CONFIG_ACPI_APEI_GHES(用于错误报告) - debugfs挂载:必须挂载debugfs,EINJ的控制文件仅会生成在debugfs的
apei/einj目录下 - 硬件支持:CPU/芯片组需支持错误注入功能(Intel Xeon Gold 6240R本身是支持的)
下一步解决步骤
- BIOS固件更新:这是最关键的一步。联系服务器厂商获取最新的BIOS/UEFI固件,更新后重新检查dmesg是否还有
Invalid physical address in GAR的提示 - 验证EINJ表完整性:使用
acpidump -t EINJ命令导出EINJ表,检查表中的地址字段是否为有效物理地址(而非全0) - 内核参数调整:尝试在启动时添加内核参数
apei.no_cper=1,绕过部分CPER(Common Platform Error Record)相关的固件缺陷,再重新加载einj模块 - 检查模块加载参数:确保
param_extension=on参数正确传递,可通过cat /sys/module/einj/parameters/param_extension验证是否为Y
内容的提问来源于stack exchange,提问作者Rajat Kokane
相关产品推荐
相关产品推荐

