]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
cpufreq/amd-pstate: Add comment explaining nominal_perf usage for performance policy
authorJuan Martinez <juan.martinez@amd.com>
Fri, 16 Jan 2026 21:45:39 +0000 (15:45 -0600)
committerViresh Kumar <viresh.kumar@linaro.org>
Tue, 27 Jan 2026 05:51:23 +0000 (11:21 +0530)
Add comment explaining why nominal_perf is used for MinPerf when the
CPU frequency policy is set to CPUFREQ_POLICY_PERFORMANCE, rather than
using highest_perf or lowest_nonlinear_perf.

Signed-off-by: Juan Martinez <juan.martinez@amd.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
drivers/cpufreq/amd-pstate.c

index c45bc98721d24762cdc6da4045f43b4db4620160..ec9f38b219de1f58896cfb2e1c35386fbacecf6d 100644 (file)
@@ -636,6 +636,19 @@ static void amd_pstate_update_min_max_limit(struct cpufreq_policy *policy)
        WRITE_ONCE(cpudata->max_limit_freq, policy->max);
 
        if (cpudata->policy == CPUFREQ_POLICY_PERFORMANCE) {
+               /*
+                * For performance policy, set MinPerf to nominal_perf rather than
+                * highest_perf or lowest_nonlinear_perf.
+                *
+                * Per commit 0c411b39e4f4c, using highest_perf was observed
+                * to cause frequency throttling on power-limited platforms, leading to
+                * performance regressions. Using lowest_nonlinear_perf would limit
+                * performance too much for HPC workloads requiring high frequency
+                * operation and minimal wakeup latency from idle states.
+                *
+                * nominal_perf therefore provides a balance by avoiding throttling
+                * while still maintaining enough performance for HPC workloads.
+                */
                perf.min_limit_perf = min(perf.nominal_perf, perf.max_limit_perf);
                WRITE_ONCE(cpudata->min_limit_freq, min(cpudata->nominal_freq, cpudata->max_limit_freq));
        } else {