]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
cpufreq/amd-pstate-ut: Don't check for highest perf matching on prefcore
authorMario Limonciello <mario.limonciello@amd.com>
Tue, 2 Jul 2024 17:15:14 +0000 (12:15 -0500)
committerMario Limonciello <mario.limonciello@amd.com>
Fri, 23 Aug 2024 16:07:58 +0000 (11:07 -0500)
If a system is using preferred cores the highest perf will be inconsistent
as it can change from system events.

Skip the checks for it.

Fixes: e571a5e2068e ("cpufreq: amd-pstate: Update amd-pstate preferred core ranking dynamically")
Reviewed-by: Gautham R. Shenoy <gautham.shenoy@amd.com>
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
drivers/cpufreq/amd-pstate-ut.c

index 66b73c308ce67292f99fa2fb5697a50d831db397..b7318669485e4bf529f9b76a0ef7652d7b409e38 100644 (file)
@@ -160,14 +160,17 @@ static void amd_pstate_ut_check_perf(u32 index)
                        lowest_perf = AMD_CPPC_LOWEST_PERF(cap1);
                }
 
-               if ((highest_perf != READ_ONCE(cpudata->highest_perf)) ||
-                       (nominal_perf != READ_ONCE(cpudata->nominal_perf)) ||
+               if (highest_perf != READ_ONCE(cpudata->highest_perf) && !cpudata->hw_prefcore) {
+                       pr_err("%s cpu%d highest=%d %d highest perf doesn't match\n",
+                               __func__, cpu, highest_perf, cpudata->highest_perf);
+                       goto skip_test;
+               }
+               if ((nominal_perf != READ_ONCE(cpudata->nominal_perf)) ||
                        (lowest_nonlinear_perf != READ_ONCE(cpudata->lowest_nonlinear_perf)) ||
                        (lowest_perf != READ_ONCE(cpudata->lowest_perf))) {
                        amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
-                       pr_err("%s cpu%d highest=%d %d nominal=%d %d lowest_nonlinear=%d %d lowest=%d %d, they should be equal!\n",
-                               __func__, cpu, highest_perf, cpudata->highest_perf,
-                               nominal_perf, cpudata->nominal_perf,
+                       pr_err("%s cpu%d nominal=%d %d lowest_nonlinear=%d %d lowest=%d %d, they should be equal!\n",
+                               __func__, cpu, nominal_perf, cpudata->nominal_perf,
                                lowest_nonlinear_perf, cpudata->lowest_nonlinear_perf,
                                lowest_perf, cpudata->lowest_perf);
                        goto skip_test;