]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cpufreq/amd-pstate: Change amd_pstate_update_perf() to return an int
authorMario Limonciello <mario.limonciello@amd.com>
Mon, 9 Dec 2024 18:52:42 +0000 (12:52 -0600)
committerMario Limonciello <mario.limonciello@amd.com>
Wed, 11 Dec 2024 16:44:53 +0000 (10:44 -0600)
As msr_update_perf() calls an MSR it's possible that it fails. Pass
this return code up to the caller.

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

index bf2512e1f117e609f279e070dff56aedd56991b2..d279ace500d7d834677effd98f6ff5279c2df147 100644 (file)
@@ -251,24 +251,26 @@ static int amd_pstate_get_energy_pref_index(struct amd_cpudata *cpudata)
        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)
@@ -480,7 +482,7 @@ static inline int amd_pstate_init_perf(struct amd_cpudata *cpudata)
        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)
 {
@@ -490,7 +492,7 @@ static void shmem_update_perf(struct amd_cpudata *cpudata,
        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)