diff options
| author | Gautham R. Shenoy <gautham.shenoy@amd.com> | 2026-03-26 17:17:51 +0530 |
|---|---|---|
| committer | Mario Limonciello (AMD) <superm1@kernel.org> | 2026-04-02 11:28:31 -0500 |
| commit | 30c63f723440f12626a19da5a93e094da29af51e (patch) | |
| tree | 773a3e6986aaf1db7bc9dc19d46b97471d204a4f /drivers/cpufreq/amd-pstate.c | |
| parent | b9f103d0968bc5b33bff1b1eb11c756b2ac07c6c (diff) | |
| download | linux-next-30c63f723440f12626a19da5a93e094da29af51e.tar.gz linux-next-30c63f723440f12626a19da5a93e094da29af51e.zip | |
amd-pstate: Introduce a tracepoint trace_amd_pstate_cppc_req2()
Introduce a new tracepoint trace_amd_pstate_cppc_req2() to track
updates to MSR_AMD_CPPC_REQ2.
Invoke this while changing the Floor Perf.
Reviewed-by: Mario Limonciello <mario.limonciello@amd.com>
Signed-off-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
Signed-off-by: Mario Limonciello (AMD) <superm1@kernel.org>
Diffstat (limited to 'drivers/cpufreq/amd-pstate.c')
| -rw-r--r-- | drivers/cpufreq/amd-pstate.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/drivers/cpufreq/amd-pstate.c b/drivers/cpufreq/amd-pstate.c index a068c4457a8f..5eae74a67aeb 100644 --- a/drivers/cpufreq/amd-pstate.c +++ b/drivers/cpufreq/amd-pstate.c @@ -333,6 +333,7 @@ static int amd_pstate_set_floor_perf(struct cpufreq_policy *policy, u8 perf) { struct amd_cpudata *cpudata = policy->driver_data; u64 value, prev; + bool changed; int ret; if (!cpu_feature_enabled(X86_FEATURE_CPPC_PERF_PRIO)) @@ -341,17 +342,24 @@ static int amd_pstate_set_floor_perf(struct cpufreq_policy *policy, u8 perf) value = prev = READ_ONCE(cpudata->cppc_req2_cached); FIELD_MODIFY(AMD_CPPC_FLOOR_PERF_MASK, &value, perf); - if (value == prev) - return 0; + changed = value != prev; + if (!changed) { + ret = 0; + goto out_trace; + } ret = wrmsrq_on_cpu(cpudata->cpu, MSR_AMD_CPPC_REQ2, value); if (ret) { + changed = false; pr_err("failed to set CPPC REQ2 value. Error (%d)\n", ret); - return ret; + goto out_trace; } WRITE_ONCE(cpudata->cppc_req2_cached, value); +out_trace: + if (trace_amd_pstate_cppc_req2_enabled()) + trace_amd_pstate_cppc_req2(cpudata->cpu, perf, changed, ret); return ret; } |
