情况介绍
在华硕主板PRIME Z790-P WIFI下运行ubuntu服务器的时候,出现以下bug:
[ 2160.271294] acpi bios error: failure creating name object [_SB.PCOO.PEG1.PEGP, DSM,USRG], AE_ALREADY_EXISTS(20230628/dsfield-184)
[ 2160.271298]ACPI ErrOr: AE_ALREADY_EXISTS, CreateBufferField failure(20230628/dsw1oad2-477)
2160.271311]ACPI Error: Aborting method _SB.PCOO.PEG1.PEGP._DSM due to previous error (AE _ALREADY_EXISTS)(20230628/psparse-529)
问题根源定位
ACPI BIOS Error (AE_ALREADY_EXISTS)
触发路径: _SB.PC00.PEG1.PEGP._DSM.USRG
硬件关联: PEG1 对应主板第一个 PCIe x16 插槽(通常用于显卡),PEGP 可能关联 PCIe 设备(如显卡/NVMe SSD)的电源管理
本质原因: BIOS 的 ACPI 表定义存在重复对象,与 Linux 内核解析逻辑冲突
分阶段修复方案
阶段 1:紧急修复(抑制错误)
目标: 快速消除日志干扰,确保系统稳定性
- 调整内核启动参数
编辑 GRUB 配置:
sudo vim /etc/default/grub
修改此行(追加参数):
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pci=noaer acpi_mask_gpe=0x6F"
更新 GRUB 并重启:
sudo update-grub && sudo reboot
阶段 2:BIOS 和固件更新
目标: 根除 ACPI 错误,修复硬件兼容性
更新华硕主板 BIOS
当前版本: 1641 → 最新版本(截至 2024.03,最新为 2802)
官网下载: ASUS PRIME Z790-P WIFI BIOS
升级步骤:
将 BIOS 文件(如 PRIME-Z790-P-WIFI-ASUS-2802.CAP)放入 FAT32 U 盘
开机按 Del 进入 BIOS → Advanced Mode → Tool → EZ Flash
选择 U 盘中的文件执行升级
阶段 3:内核与驱动优化
目标: 确保软硬件兼容性
- 升级 Linux 内核至 6.5+
sudo apt install linux-image-generic-hwe-22.04-edge
sudo reboot
- 手动编译 ACPI 补丁(高级用户)
若 BIOS 更新后 ACPI 错误仍存在,需修改内核源码:
下载内核源码:
apt source linux-source-$(uname -r)
修改 drivers/acpi/acpica/dsfield.c,在 acpi_ds_create_buffer_field 函数中添加容错逻辑:
if (status == AE_ALREADY_EXISTS) {
acpi_os_printf("ACPI: Ignored AE_ALREADY_EXISTS\n");
return AE_OK; // 修改为返回成功
}
编译并安装内核:
make -j$(nproc) && sudo make modules_install && sudo make install