59 lines
2.1 KiB
Diff
59 lines
2.1 KiB
Diff
From f1edcca6a96f087f5862a14012fafd4eb9738601 Mon Sep 17 00:00:00 2001
|
|
From: Mario Limonciello <mario.limonciello@amd.com>
|
|
Date: Thu, 5 Dec 2024 16:28:47 -0600
|
|
Subject: cpufreq/amd-pstate: Set different default EPP policy for Epyc and
|
|
Ryzen
|
|
|
|
For Ryzen systems the EPP policy set by the BIOS is generally configured
|
|
to performance as this is the default register value for the CPPC request
|
|
MSR.
|
|
|
|
If a user doesn't use additional software to configure EPP then the system
|
|
will default biased towards performance and consume extra battery. Instead
|
|
configure the default to "balanced_performance" for this case.
|
|
|
|
Suggested-by: Artem S. Tashkinov <aros@gmx.com>
|
|
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219526
|
|
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
|
---
|
|
drivers/cpufreq/amd-pstate.c | 12 ++++++++----
|
|
1 file changed, 8 insertions(+), 4 deletions(-)
|
|
|
|
--- a/drivers/cpufreq/amd-pstate.c
|
|
+++ b/drivers/cpufreq/amd-pstate.c
|
|
@@ -1531,8 +1531,6 @@ static int amd_pstate_epp_cpu_init(struc
|
|
|
|
policy->driver_data = cpudata;
|
|
|
|
- cpudata->epp_cached = cpudata->epp_default = amd_pstate_get_epp(cpudata);
|
|
-
|
|
policy->min = policy->cpuinfo.min_freq;
|
|
policy->max = policy->cpuinfo.max_freq;
|
|
|
|
@@ -1543,10 +1541,13 @@ static int amd_pstate_epp_cpu_init(struc
|
|
* the default cpufreq governor is neither powersave nor performance.
|
|
*/
|
|
if (amd_pstate_acpi_pm_profile_server() ||
|
|
- amd_pstate_acpi_pm_profile_undefined())
|
|
+ amd_pstate_acpi_pm_profile_undefined()) {
|
|
policy->policy = CPUFREQ_POLICY_PERFORMANCE;
|
|
- else
|
|
+ cpudata->epp_default = amd_pstate_get_epp(cpudata);
|
|
+ } else {
|
|
policy->policy = CPUFREQ_POLICY_POWERSAVE;
|
|
+ cpudata->epp_default = AMD_CPPC_EPP_BALANCE_PERFORMANCE;
|
|
+ }
|
|
|
|
if (cpu_feature_enabled(X86_FEATURE_CPPC)) {
|
|
ret = rdmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ, &value);
|
|
@@ -1559,6 +1560,9 @@ static int amd_pstate_epp_cpu_init(struc
|
|
return ret;
|
|
WRITE_ONCE(cpudata->cppc_cap1_cached, value);
|
|
}
|
|
+ ret = amd_pstate_set_epp(cpudata, cpudata->epp_default);
|
|
+ if (ret)
|
|
+ return ret;
|
|
|
|
current_pstate_driver->adjust_perf = NULL;
|
|
|