From: Mario Limonciello Date: Mon, 9 Dec 2024 18:02:14 +0000 (-0600) Subject: cpufreq/amd-pstate: Update cppc_req_cached for shared mem EPP writes X-Git-Tag: v6.15-rc1~191^2~4^2~2^2~4 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1905fac6f9e08e34135e089704a0733ce711eb83;p=thirdparty%2Fkernel%2Flinux.git cpufreq/amd-pstate: Update cppc_req_cached for shared mem EPP writes On EPP only writes update the cached variable so that the min/max performance controls don't need to be updated again. Reviewed-by: Dhananjay Ugwekar Reviewed-by: Gautham R. Shenoy Signed-off-by: Mario Limonciello --- diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index e5db731618e82..df42a2d22225b 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c @@ -336,6 +336,7 @@ static int shmem_set_epp(struct cpufreq_policy *policy, u8 epp) { struct amd_cpudata *cpudata = policy->driver_data; struct cppc_perf_ctrls perf_ctrls; + u64 value; int ret; if (trace_amd_pstate_epp_perf_enabled()) { @@ -362,6 +363,11 @@ static int shmem_set_epp(struct cpufreq_policy *policy, u8 epp) } WRITE_ONCE(cpudata->epp_cached, epp); + value = READ_ONCE(cpudata->cppc_req_cached); + value &= ~AMD_CPPC_EPP_PERF_MASK; + value |= FIELD_PREP(AMD_CPPC_EPP_PERF_MASK, epp); + WRITE_ONCE(cpudata->cppc_req_cached, value); + return ret; }