[Industry News] Linux 内核新补丁调整 AC 电源插拔行为向 Windows 看齐
Tofloor
poster avatar
网络对线操盘手
deepin
2025-02-11 09:12
Author

近日,AMD 工程师 Mario Limonciello 向 Linux 内核提交了一系列补丁,旨在调整系统在 s2idle(挂起到空闲)状态下的 AC 电源插拔行为,这一改动主要针对笔记本电脑、手持游戏设备(如 Steam Deck 同类产品)在休眠时因电源状态切换导致的兼容性问题,尤其是此前曝光的 Legion Go S(搭载 AMD Ryzen Z2 芯片)的固件级故障。

当前,Linux 与 Windows 在 s2idle 状态下的电源行为存在关键差异:

  • Windows:插入或拔出 AC 电源时,系统会完全唤醒,若后续无用户操作则重新进入睡眠。
  • Linux:AC 事件仅触发短暂唤醒后立即重回休眠,可能导致硬件固件因快速状态切换出现异常(例如某些设备无法正确处理快速进入 / 退出低功耗模式)。

Limonciello 指出,由于 OEM 厂商通常基于 Windows 进行硬件验证,Linux 的差异行为易暴露底层固件缺陷。新补丁通过记录休眠前的电池状态,并在 AC 事件后对比状态变化,决定是否彻底唤醒系统,从而减少 “兼容性陷阱”。

技术细节:唤醒机制与能耗监控

  1. 唤醒逻辑重构
    补丁在 ACPI 电池驱动中新增 suspend_state 字段,休眠时保存当前电源状态(如是否充电)。若唤醒后检测到状态变化(如从充电变为放电),则触发系统完全唤醒,而非立即休眠。
  2. 能耗统计透明化
    新增 /sys/power/suspend_stats/last_sleep_energy 文件,以**毫安时(mAh)**为单位记录上次休眠周期的电池消耗量,方便用户空间工具分析功耗问题。

争议与用户控制

尽管新行为默认启用,但开发者社区对其适用场景存在分歧。例如,若笔记本合盖时连接电源,是否应强制唤醒?Limonciello 认为,这与用户外接扩展坞的场景需求一致,但用户仍可通过禁用 ACPI 电池设备的 power/wakeup 属性恢复旧逻辑。

影响与未来展望

此次调整尤其利好搭载 AMD 芯片的设备,但惠及所有支持 s2idle 的 x86/ARM 平台。随着 Linux 在掌机市场的渗透(如 Steam OS 设备),此类优化将显著提升用户体验。此外,补丁的 “Windows 兼容性驱动” 思路或成为未来硬件支持的新范式,减少厂商因生态差异对 Linux 的适配成本。

结语
Linux 在电源管理领域的 “向 Windows 学习”,并非妥协,而是以用户体验为优先的务实选择。这一补丁不仅修复了长期存在的兼容性痛点,也为开源生态与 OEM 厂商的协作提供了新思路。未来,类似 “求同存异” 的优化或成常态,进一步模糊两大操作系统在硬件支持上的体验边界。


补丁信息:[PATCH 0/4] Improvements to ACPI battery handling over s2idle

原文链接:Linux 内核新补丁调整 AC 电源插拔行为,向 Windows 看齐以提升硬件兼容性

Reply Favorite View the author
All Replies
HualetWang
deepin
2025-02-11 09:47
#1

Limonciello 指出,由于 OEM 厂商通常基于 Windows 进行硬件验证,Linux 的差异行为易暴露底层固件缺陷。

根本原因是这个,Wintel 作为事实上的标准,给Linux系统的适配带来了太多的问题。

Reply View the author
神末shenmo
deepin
Spark-App
Q&A Team
2025-02-11 10:47
#2

给写的烂的固件擦屁股

Reply View the author
fslong
deepin
2025-02-11 12:31
#3

这不应该厂商固件的事么?

Reply View the author