内核编译开启AMD P-state后功能不可用该如何解决?
解决步骤
- 第一步确认硬件和BIOS配置
确认你的CPU是Zen2及以上架构的锐龙处理器,进入主板BIOS打开*CPPC(协作功耗性能控制)*选项,部分主板的BIOS里可能叫AMD Collaborative Power Control,同步关闭旧的PowerNow!相关选项。 - 第二步修正内核配置
你当前配置里的「处理器系列」选择错误,Opteron/Athlon64/Hammer/K8是十几年前的老AMD架构,不支持P-state新特性,需要把处理器系列改为对应Zen架构选项,若无对应选项则选择通用x86_64处理器配置。
另外如果你要优先使用amd-pstate,建议把「ACPI处理器P-States驱动」从内置<*>改为模块,避免内置驱动抢占优先级。 - 第三步修正内核启动参数
在grub的内核启动参数里添加如下内容:amd_pstate=active initcall_blacklist=acpi_cpufreq_init
保存后更新grub配置,不要只依赖模块黑名单,因为acpi-cpufreq如果编译为内置的话模块黑名单不会生效。 - 第四步验证加载结果
重启后先执行dmesg | grep amd_pstate查看驱动加载日志,无报错的话再执行cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_driver,输出amd-pstate即代表启用成功。
如果按照以上步骤操作还是加载失败,建议直接把amd-pstate编译为内核内置功能,而非可加载模块,避免模块加载优先级问题。
内容的提问来源于stack exchange,提问作者avelardo
相关产品推荐
相关产品推荐

