十月三十日,一份由 Atharva Tiwari 署名的补丁集出现在内核邮件列表里,十四份 RFC 文档指向同一件事:把英特尔平台 Mac 的系统管理控制器支持彻底重做一遍。

现役的 applesmc 驱动是典型的"什么都往里塞":风扇调速、温度采样、环境光、运动感知、键盘背光全挤在一个源文件里,通信机制还是自研的。代码越堆越硬,想多认一款机型,改动成本高得离谱。

补丁的思路是把苹果芯片平台已经跑熟的 macsmc 框架搬过来,替代这套老驱动。两代机器在控制器的功能逻辑上本来就高度相似,差别只在跟主处理器说话的通道,这给代码复用留出了空间。

改造先从分层入手。macsmc 被切成通用核心与硬件后端两块:原本服务苹果芯片的 RTKit 通信抽成独立后端,另为英特尔机器新写一个 ACPI 后端,把端口输入输出、内存映射访问、中断驱动的完成机制都补上——这几项能力旧驱动一项都没有。

单体驱动随之拆成一串职责单一的小模块,全部按内核对子系统的规范落地。新增的部分包括基于控制器的看门狗,系统死锁时可以触发硬复位;挂进工业输入输出框架的环境光与加速度传感器;以及独立的键盘背光控制。实时时钟、电源供应管理、硬件监控这几个子系统也都做了针对性适配。

电源管理逻辑同步更新:启用 macsmc 电源模块后,内核会自动停掉 ACPI 电池与适配器驱动,避免两套机制并存造成设备重复注册。硬件监控侧还补了有符号定点数的解析方式,旧驱动读不出来的部分键值这下能读了。

验证覆盖了五款英特尔机型,从早期十三英寸的 MacBook Air,到 2015 年与 2016 年的两款 MacBook Pro,再到 2019 年的十六英寸机型与一台 2020 年的 iMac,都在实测名单里。唯一缺席的是运动传感器,因为作者手上没有对应硬件。

补丁眼下是 RFC 形态,意在先就架构方向征求维护者意见,后续扩大测试面再转正式提交。对还在用英特尔 Mac 装 Linux 的人来说,这大概是近几年最实质的一次底层利好。

文章与图片内容转载网络,如有侵权请联系平台删除

点赞(0)

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部