52 lines
1.8 KiB
Diff
52 lines
1.8 KiB
Diff
From ad3fffe8ff1f18ad437d8b0d0bb602ba3c24adf7 Mon Sep 17 00:00:00 2001
|
|
From: Dhananjay Ugwekar <dhananjay.ugwekar@amd.com>
|
|
Date: Wed, 5 Feb 2025 11:25:16 +0000
|
|
Subject: cpufreq/amd-pstate: Pass min/max_limit_perf as min/max_perf to
|
|
amd_pstate_update
|
|
|
|
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>
|
|
---
|
|
drivers/cpufreq/amd-pstate.c | 9 ++++-----
|
|
1 file changed, 4 insertions(+), 5 deletions(-)
|
|
|
|
--- a/drivers/cpufreq/amd-pstate.c
|
|
+++ b/drivers/cpufreq/amd-pstate.c
|
|
@@ -615,7 +615,7 @@ static int amd_pstate_update_freq(struct
|
|
{
|
|
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
|
|
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
|
|
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);
|