Linux 5.11 上个星期才发布稳定版,Linux 5.12 目前仍在开发过程中。在 Linux 5.12 最新的合并中,修复了在系统温度较高,但还没有真正达到临界温度时会过早关闭基于英特尔 CPU 的移动工作站的问题。
周五是 Linux 5.12 的一个合并窗口期,此次合并以修复补丁为主。在各种各样的补丁中,有两个补丁是需要特别注意的。这两个补丁都是由 Canonical 的 Kai-Heng Feng 所提交的,他是 Ubuntu 的 Linux 内核团队的成员。
这两个补丁分别针对的是英特尔 int340x 和英特尔 PCH 驱动程序,用于修复“临界”温度下系统意外关闭的问题。这两个补丁并不是要修复温度不准确的问题,而是运行时的温度还不足以使内核强制关闭整个系统,但系统却自动关闭的问题。
Kai-Heng Feng 在 int340x 补丁中解释了这种情况:
我们在基于英特尔的移动工作站上看到设备因过热而关机,该关机发生在 thermal_zone_device_register(): kernel: thermal thermal_zone15: critical temperature reached (101 C), shutting down 期间。
但是,在此时设备不应该执行过热关机,因为我们要使用专用守护程序来处理过热关机,在当前情境下为使用英特尔的 Thermald 守护程序。其次,对于基于 ACPI 的系统,达到临界温度并不意味着就要关机,除非它位于 ThermalZone 命名空间内。ACPI 规范写道,临界温度 11.4.4 _CRT 存在于设备下方时,设备驱动程序将评估该对象以确定设备的临界冷却温度触发点。然后,设备的驱动器将使用该值来编程内部设备温度传感器触发点。
因此,当出现这种情况时,仅意味着我们应该采取更积极的冷却方法。当 ACPI ThermalZone 下没有 int340x 设备时,此修复会覆盖默认的 .critical 回调以防止意外的热关机。
如果有用户发现了自己的 Intel 移动工作站意外出现关闭电源的情况,那么罪魁祸首很可能就是它,并且在 Linux 5.12 中会修复这个问题。