Lobsters | 原文链接 | 2026-09-11 收录

SystemIO 冲突不是固件 bug:ACPI 操作区域与原生驱动的竞速

来源: codon.org.uk — 2026-09-09

概述

Matthew Garrett 解释了常见的 ACPI 报错 SystemIO range ... conflicts with OpRegion ... 为何通常不是固件 bug。ACPI 与设备树不同,它把硬件知识以代码(ASL 编译成字节码)的形式分发,由操作系统在运行时解释执行。设备常用索引寄存器加数据寄存器的间接寻址方式访问内部寄存器,ACPI 方法之间靠互斥锁避免竞态;但如果有人为同一硬件写了直接访问寄存器的 Linux 驱动,它完全不知道 ACPI 的存在,就可能与固件方法抢用同一个索引寄存器——历史上真出现过把状态标志当温度读、从而触发立即热关机的事故。内核因此阻止这类驱动加载并打印警告,正确做法是使用该设备的 ACPI 驱动。

核心要点

金句

内核无法知道固件在那个区域会做什么样的访问,所以它假定这可能是危险的,并阻止驱动加载。
返回 Lobsters 首页