]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cpufreq/amd-pstate: Use "epp_default_dc" as default when dynamic_epp is disabled
authorK Prateek Nayak <kprateek.nayak@amd.com>
Fri, 8 May 2026 05:17:47 +0000 (05:17 +0000)
committerMario Limonciello (AMD) <superm1@kernel.org>
Fri, 8 May 2026 05:30:50 +0000 (00:30 -0500)
If "dynamic_epp" is disabled, the driver initialization and the default
EPP selection from sysfs currently sets the EPP based on the power
supply state of the system at that time but there is no power supply
callbacks registered to toggle it when the power supply state changes.

This can lead to faster battery drain on platforms that start off while
being plugged to the wall but later move to battery power since the EPP
stays at AMD_CPPC_EPP_PERFORMANCE.

Use "epp_default_dc" as the default EPP selection when dynamic_epp is
disabled, restoring older behavior. On servers, this defaults to
AMD_CPPC_EPP_PERFORMANCE and on other platforms, it defaults to
AMD_CPPC_EPP_BALANCE_PERFORMANCE.

Fixes: e30ca6dd5345 ("cpufreq/amd-pstate: Add dynamic energy performance preference")
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
Link: https://lore.kernel.org/r/20260508051748.10484-6-kprateek.nayak@amd.com
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
drivers/cpufreq/amd-pstate.c

index 175925762a93cfffd6ce00c1da160916416eadf4..9eb9c3f4e809a7056247b78b2a03ec146dc6aa3b 100644 (file)
@@ -1429,7 +1429,7 @@ ssize_t store_energy_performance_preference(struct cpufreq_policy *policy,
                if (ret)
                        epp = epp_values[ret];
                else
-                       epp = amd_pstate_get_balanced_epp(policy);
+                       epp = cpudata->epp_default_dc;
        }
 
        if (cpudata->policy == CPUFREQ_POLICY_PERFORMANCE) {
@@ -1954,7 +1954,7 @@ static int amd_pstate_epp_cpu_init(struct cpufreq_policy *policy)
        if (dynamic_epp)
                ret = amd_pstate_set_dynamic_epp(policy);
        else
-               ret = amd_pstate_set_epp(policy, amd_pstate_get_balanced_epp(policy));
+               ret = amd_pstate_set_epp(policy, cpudata->epp_default_dc);
        if (ret)
                goto free_cpudata1;