cpufreq/amd-pstate: Pass min/max_limit_perf as min/max_perf to amd_pstate_update
authorDhananjay Ugwekar <dhananjay.ugwekar@amd.com>
Wed, 5 Feb 2025 11:25:16 +0000 (11:25 +0000)
committerMario Limonciello <mario.limonciello@amd.com>
Mon, 24 Feb 2025 00:54:56 +0000 (18:54 -0600)
Currently, amd_pstate_update_freq passes the hardware perf limits as
min/max_perf to amd_pstate_update, which eventually gets programmed into
the min/max_perf fields of the CPPC_REQ register.

Instead pass the effective perf limits i.e. min/max_limit_perf values to
amd_pstate_update as min/max_perf.

Signed-off-by: Dhananjay Ugwekar <dhananjay.ugwekar@amd.com>
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
Link: https://lore.kernel.org/r/20250205112523.201101-6-dhananjay.ugwekar@amd.com
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
drivers/cpufreq/amd-pstate.c

index 0cf24dff55e96206412e4bd57ee3fbc7e777cf4f..3cb81b826bcb2de13ce31a7c0d2ec8a32d237444 100644 (file)
@@ -615,7 +615,7 @@ static int amd_pstate_update_freq(struct cpufreq_policy *policy,
 {
        struct cpufreq_freqs freqs;
        struct amd_cpudata *cpudata = policy->driver_data;
-       unsigned long max_perf, min_perf, des_perf, cap_perf;
+       unsigned long des_perf, cap_perf;
 
        if (!cpudata->max_freq)
                return -ENODEV;
@@ -624,8 +624,6 @@ static int amd_pstate_update_freq(struct cpufreq_policy *policy,
                amd_pstate_update_min_max_limit(policy);
 
        cap_perf = READ_ONCE(cpudata->highest_perf);
-       min_perf = READ_ONCE(cpudata->lowest_perf);
-       max_perf = cap_perf;
 
        freqs.old = policy->cur;
        freqs.new = target_freq;
@@ -642,8 +640,9 @@ static int amd_pstate_update_freq(struct cpufreq_policy *policy,
        if (!fast_switch)
                cpufreq_freq_transition_begin(policy, &freqs);
 
-       amd_pstate_update(cpudata, min_perf, des_perf,
-                       max_perf, fast_switch, policy->governor->flags);
+       amd_pstate_update(cpudata, cpudata->min_limit_perf, des_perf,
+                         cpudata->max_limit_perf, fast_switch,
+                         policy->governor->flags);
 
        if (!fast_switch)
                cpufreq_freq_transition_end(policy, &freqs, false);