70 lines
2.4 KiB
Diff
70 lines
2.4 KiB
Diff
From b2a0f625fa30dc907daf1b07bf94b15872da096b Mon Sep 17 00:00:00 2001
|
|
From: Mario Limonciello <mario.limonciello@amd.com>
|
|
Date: Thu, 5 Dec 2024 16:28:41 -0600
|
|
Subject: cpufreq/amd-pstate: Change amd_pstate_update_perf() to return an int
|
|
|
|
As msr_update_perf() calls an MSR it's possible that it fails. Pass
|
|
this return code up to the caller.
|
|
|
|
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
|
|
Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
|
|
---
|
|
drivers/cpufreq/amd-pstate.c | 22 ++++++++++++----------
|
|
1 file changed, 12 insertions(+), 10 deletions(-)
|
|
|
|
--- a/drivers/cpufreq/amd-pstate.c
|
|
+++ b/drivers/cpufreq/amd-pstate.c
|
|
@@ -281,24 +281,26 @@ static int amd_pstate_get_energy_pref_in
|
|
return index;
|
|
}
|
|
|
|
-static void msr_update_perf(struct amd_cpudata *cpudata, u32 min_perf,
|
|
+static int msr_update_perf(struct amd_cpudata *cpudata, u32 min_perf,
|
|
u32 des_perf, u32 max_perf, bool fast_switch)
|
|
{
|
|
- if (fast_switch)
|
|
+ if (fast_switch) {
|
|
wrmsrl(MSR_AMD_CPPC_REQ, READ_ONCE(cpudata->cppc_req_cached));
|
|
- else
|
|
- wrmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ,
|
|
- READ_ONCE(cpudata->cppc_req_cached));
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
+ return wrmsrl_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ,
|
|
+ READ_ONCE(cpudata->cppc_req_cached));
|
|
}
|
|
|
|
DEFINE_STATIC_CALL(amd_pstate_update_perf, msr_update_perf);
|
|
|
|
-static inline void amd_pstate_update_perf(struct amd_cpudata *cpudata,
|
|
+static inline int amd_pstate_update_perf(struct amd_cpudata *cpudata,
|
|
u32 min_perf, u32 des_perf,
|
|
u32 max_perf, bool fast_switch)
|
|
{
|
|
- static_call(amd_pstate_update_perf)(cpudata, min_perf, des_perf,
|
|
- max_perf, fast_switch);
|
|
+ return static_call(amd_pstate_update_perf)(cpudata, min_perf, des_perf,
|
|
+ max_perf, fast_switch);
|
|
}
|
|
|
|
static int msr_set_epp(struct amd_cpudata *cpudata, u32 epp)
|
|
@@ -510,7 +512,7 @@ static inline int amd_pstate_init_perf(s
|
|
return static_call(amd_pstate_init_perf)(cpudata);
|
|
}
|
|
|
|
-static void shmem_update_perf(struct amd_cpudata *cpudata,
|
|
+static int shmem_update_perf(struct amd_cpudata *cpudata,
|
|
u32 min_perf, u32 des_perf,
|
|
u32 max_perf, bool fast_switch)
|
|
{
|
|
@@ -520,7 +522,7 @@ static void shmem_update_perf(struct amd
|
|
perf_ctrls.min_perf = min_perf;
|
|
perf_ctrls.desired_perf = des_perf;
|
|
|
|
- cppc_set_perf(cpudata->cpu, &perf_ctrls);
|
|
+ return cppc_set_perf(cpudata->cpu, &perf_ctrls);
|
|
}
|
|
|
|
static inline bool amd_pstate_sample(struct amd_cpudata *cpudata)
|