Имеетя машина с процессором AMD Epyc 7702P, ядро 4.19.71 (староватое, но менять не могу). Пытаюсь выставить настройки частоты с помощью cpupower:
# cpupower frequency-set -g performance
Setting cpu: 0
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
for example because of hardware which cannot be set to a specific frequency
or because the userspace governor isn't loaded?
#
Начинаю разбираться:
# 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/
<пусто>
Непонятно, почему отсутствуют cpufreq драйвера
Конфиг ядра имеет:
CONFIG_CPU_FREQ=y
CONFIG_X86_ACPI_CPUFREQ=y
CONFIG_X86_ACPI_CPUFREQ_CPB=y
CONFIG_X86_INTEL_PSTATE=y
CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
Пробовал отключать CONFIG_X86_INTEL_PSTATE, добавлять CONFIG_X86_POWERNOW_K8 (единственный относящийся к AMD), но не помогло.
Временно обновил ядро до 5.4.0. Немного подебажил драйвера drivers/cpufreq/cpufreq.c and drivers/cpufreq/acpi-cpufreq.c и выяснилось, что драйвер acpi-cpufreq при попытке инициализации на процессоре возвращает ошибку -EIO и сообщение:
ACPI-based processor performance control unavailable
Конкретнее, цепочка функций следующая:
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() пытается читать _PCT объект из ACPI таблицы и обламывается, ибо не может найти.
Означает ли это, что в БИОСе нет полной поддержки ACPI, или нужно обновить микрокод на процессоре, или таки что-то отсутствует в ядре?