Commit 942718f2 authored by Mario Limonciello's avatar Mario Limonciello
Browse files

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.

Reviewed-by: default avatarGautham R. Shenoy <gautham.shenoy@amd.com>
Link: https://lore.kernel.org/r/20241209185248.16301-10-mario.limonciello@amd.com


Signed-off-by: default avatarMario Limonciello <mario.limonciello@amd.com>
parent 68cb0e77
Loading
Loading
Loading
Loading
+12 −10
Original line number Diff line number Diff line
@@ -251,23 +251,25 @@ 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,
		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,
	return static_call(amd_pstate_update_perf)(cpudata, min_perf, des_perf,
						   max_perf, fast_switch);
}

@@ -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)