自linux 5.17内核发布以来,我收件箱中的主要问题一直来自读者询问如何实际使用 amd p-state 驱动程序。现在这个驱动程序不是 acpi cpufreq 的默认驱动程序,而且我还没有看到任何 linux 发行版供应商宣布他们计划立即默认使用这个新驱动程序,但在未来的几个月里,我预计这种情况会改变。无论如何,如果今天想在 linux 5.17 上使用amd_pstate,这里有一个简短的过渡教程。
首先,检查以验证您的 cpu 频率缩放驱动程序的最简单方法是阅读/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver查看您使用的是 acpi-cpufreq 还是 amd-pstate。提醒一下,amd p-state 仅支持 amd zen 2 处理器和更新版本。amd p-state 依赖于 acpi 协作处理器性能控制 (cppc),这仅适用于 zen 2 和更新版本 – zen 1 / zen 1 将不会得到任何支持。您还需要确保在您的 bios 中启用 cppc,以防它碰巧被禁用。许多主板供应商在 bios 中确实有一个“acpi cppc”选项,可以在 zen 2 和更新的处理器上设置为启用或自动。
本教程是使用 ubuntu 和他们的 ubuntu mainline kernel ppa 内核构建编写的。acpi cpufreq 仍然是其 linux 5.17 内核构建的默认设置,但 amd p-state 模块作为内核构建的一部分包含在内。大多数其他发行版内核构建至少可能会启用config_x86_amd_pstate=m选项,因此它至少是构建的。如果您没有看到 config_x86_amd_pstate 并且它被注释掉或“n”,您需要首先重建您的内核以便包含驱动程序。
在大多数(全部?)分发内核上,acpi cpufreq 驱动程序内置在内核中而不是模块中,因此简单地将其列入黑名单是行不通的。为了避免加载 acpi cpufreq,即使它是内置的,可以在/boot/grub/grub.cfg或相应位置设置“initcall_blacklist=acpi_cpufreq_init”选项,以便在启动时编辑内核命令行选项(例如“/etc/ default/grub”以获得更永久的凯发k8娱乐官方网址的解决方案)。需要此 initcall_blacklist 以防止调用 acpi cpufreq 初始化函数,从而允许 amd p-state 成功初始化。对于希望默认加载 amd p-state 的 ubuntu/initramfs 用户,您还可以将“amd_pstate”添加到“/etc/initramfs-tools/modules”
在将 acpi cpufreq 驱动程序列入黑名单并加载 amd p-state 驱动程序的更改重新启动后,您应该在新的 amd cpu 频率缩放驱动程序代码路径上。同样,您可以检查/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver进行验证。如果您使用的是新驱动程序,它应该打印amd-pstate。如果该文件不存在,您可能已成功将 acpi cpufreq 列入黑名单,但 amd p-state 尚未加载,在这种情况下,您可以尝试modprobe amd-pstate。
如果 amd p-state 仍然不起作用,您可能需要添加amd_pstate.shared_mem=1作为内核命令行配置的一部分。对于 linux 5.17,某些系统需要使用 amd p-state 的“shared_mem”模块选项才能在某些硬件上正确运行。希望很快该限制将得到解决,无需设置该额外选项。
如果想知道如何在 linux 5.17 上启用 amd p-state,这就是快速概述。如果有任何问题或问题,请访问我们的论坛/评论本文。我很快就会在 linux 5.17 final 上完成一些新的 amd p-state 基准测试。请记住,虽然这个驱动程序最初专注于像 steam deck 这样的 ryzen 移动 apu,但在向前发展时希望看到更多的桌面(可能还有 amd epyc 服务器)调整。
原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/yun141241.html