![linux:AMD Epyc 上的 ACPI 支持很差?](https://linux22.com/image/187161/linux%EF%BC%9AAMD%20Epyc%20%E4%B8%8A%E7%9A%84%20ACPI%20%E6%94%AF%E6%8C%81%E5%BE%88%E5%B7%AE%EF%BC%9F.png)
我有一个服务器 HPE ProLiant 系统,配备 AMD Epyc CPU、BIOS A43 v1.20、Linux 内核 5.4.0。
cpupower
总是报告没有可用的驱动程序,因此我无法设置 CPU 频率(详细信息在我的其他问题中)linux:无法使用 cpupower 设置 cpu 频率调节器):
# cpupower frequency-info
analyzing CPU 0:
no or unknown cpufreq driver is active on this CPU
CPUs which run at the same hardware frequency: Not Available
CPUs which need to have their frequency coordinated by software: Not Available
maximum transition latency: Cannot determine or is not supported.
Not Available
available cpufreq governors: Not Available
Unable to determine current policy
current CPU frequency: Unable to call hardware
current CPU frequency: Unable to call to kernel
boost state support:
Supported: yes
Active: yes
Boost States: 0
Total States: 3
Pstate-P0: 2000MHz
Pstate-P1: 1800MHz
Pstate-P2: 1500MHz
#
# ls /sys/devices/system/cpu/cpufreq/
<Empty>
#
#
我调试驱动程序行为的努力 - drivers/cpufreq/cpufreq.c 和 drivers/cpufreq/acpi-cpufreq.c 发现acpi-cpufreq
实际上失败并显示消息:
基于 ACPI 的处理器性能控制不可用
调用链如下:
cpufreq_add_dev()
-> cpufreq_online(cpu)
-> cpufreq_driver->init() [*]
[*]
acpi_cpufreq_cpu_init()
-> acpi_processor_register_performance()
-> acpi_processor_get_performance_info()
<return -EIO>
据我了解,在 acpi_processor_get_performance_info() 中,驱动程序尝试从 ACPI 表中读取 _PCT 对象并失败,因为找不到它。
这是否意味着 BIOS 没有完全支持 ACPI,或者 CPU 微码需要更新,或者内核缺少某些东西?
我很乐意提供任何建议/评论。
答案1
我在BIOS中设置以下参数后问题得到解决:
BIOS/Platform Configuration
-> Power and Performance Options
-> Power Regulator
[*] OS Control Mode
显然它允许操作系统更改和检查请求P-states
的状态等。P-state