今天,一个请求评论(RFC)补丁系列已发布到 Linux 内核邮件列表,以介绍 AMD 动态电源和热配置接口“DPTCi”驱动程序。有了这个驱动程序,它将提供更好的上游 Linux 内核支持,用于调整现代 Ryzen 驱动的游戏手持设备的电源/性能/热管理。但不要过早兴奋,因为该驱动程序的部分是由人工智能组装的,由于缺乏披露,这已经在 LKML 上引起了一些混乱。
Antheas Kapenekakis 是一位积极参与改进不同游戏手持设备各种 Linux 驱动的开发者。他处理了改进 OneXPlayer 设备、ASUS 硬件、AYANEO、MSI Claw 等设备的 Linux 支持。现在他正在编写这个 AMD DPTCi 驱动程序,以帮助进一步改进现代 AMD Ryzen 驱动的手持设备上游 Linux 内核支持。

Kapenekakis 在补丁系列的封面信中解释说:
许多基于 AMD 的手持电脑(GPD、AYANEO、OneXPlayer、AOKZOE、OrangePi)在\_SB.ALIB 上使用 AGESA ALIB 方法,该方法接受功能 0x0C(动态电源和热配置接口,DPTCi)。这允许软件在运行时调整 APU 的电源和热参数:STAPM 限制、快/慢 PPT 限制、皮肤温度 TDP 限制、慢/STAPM 时间常数以及热控制目标。
到目前为止,用户空间通过 acpi_call 树外模块或 ryzenadj 来访问这个接口,它们不提供 ABI 保证,也没有每个设备的安全限制。这个驱动程序用一种适当的内核实现来替换了这些,它:
通过固件属性 sysfs ABI 暴露所有七个参数,以便标准工具(fwupd、systemd-bios-vendor 等)无需特定设备知识即可枚举和修改它们。
* 强制执行每个设备和每个 SoC 的分层限制。默认的”设备”模式将写入限制在一个经过筛选的安全范围内(smin..smax),该范围基于设备的散热设计。一个”扩展”模式会暴露完整的硬件验证范围。可选的 CONFIG_AMD_DPTC_EXTENDED Kconfig 添加了”soc”(原始 ALIB_PARAMS 包)和”无限制”层级,用于高级使用。当前激活的层级本身是一个固件属性,可以在运行时切换。
* 在单个 ALIB 调用中分阶段设置值并原子提交,匹配协议预期的批量更新语义。一个 save_settings 属性(根据固件属性 ABI)控制写入是立即提交(”single” 模式)还是直到显式 “save” 才提交。
* 在”单”模式下,系统恢复后会重新应用暂存值,因此挂起/恢复周期不会默默恢复到固件默认值。
为 GPD Win Mini / Win 4 / Win 5 / Win Max 2 / Duo / Pocket 4、OrangePi NEO-01、AOKZOE A1/A2、OneXPlayer F1/2/X1/G1 以及众多 AYANEO 型号提供了设备限制。SoC 表格涵盖 Ryzen 5000、6000、7040、8000、Z1、AI 9 HX 370 以及 Ryzen AI MAX 系列。
在 GPD Win 5(Ryzen AI MAX+ 395)上进行了测试。通过 ryzenadj -i 确认提交的值已应用于硬件,并且在全 CPU 压力负载下,快速/慢速 PPT 限制得到了尊重。”
基本上,这个 AMD DPTCi 驱动程序将允许在主线内核中获得更佳的实时热管理和电源限制调整控制。
RFC 补丁系列包含了这个最初提议的 AMD 动态电源和热配置接口驱动代码。
这个补丁系列也由于 AI 出现了一些小问题……事实证明这个驱动部分是由 AI 构建的。而且这一事实在原始补丁中并没有直接披露。在代码审查中,当质疑”systemd-bios-vendor”是什么时,Kapenekakis 承认:
我使用了一些 AI 辅助工具,从我的用户空间实现和 AMD 网站上的 ASEGA PDF 文档中编译了这部分内容。在它移至非 RFC 版本之前,我需要检查所有内容。版权年份也是一样。目前我专注于实现我所希望它做的事情。
由于这个驱动是外部开发的,它也依赖于从各种来源获得的魔术数字:
反复试验、研究,参考 Windows 等资料。该驱动中的所有设备都使用相同的 ppt/sppt/fppt 限制进行了用户空间实现测试。
因此预计将进行重写以清理代码并解决一些 AI 的粗糙之处。但 AMD DPTCi 驱动有良好的意图,希望它将发展成可以被主线内核接受的东西。
转自 AMD DPTCi Driver Posted For Linux To Better Enhance Ryzen Gaming Handhelds – Phoronix
Linuxeden开源社区