diff mbox series

[2/2] cpufreq/amd-pstate-ut: Don't fail boost test case if CPB isn't supported

Message ID 20240702171515.6780-2-mario.limonciello@amd.com (mailing list archive)
State New
Delegated to: Mario Limonciello
Headers show
Series [1/2] cpufreq/amd-pstate-ut: Don't check for highest perf matching on prefcore | expand

Commit Message

Mario Limonciello July 2, 2024, 5:15 p.m. UTC
cpudata->boost_supported will only be configured when a CPU actually
supports core performance boost. Add an extra guard into the check
to ensure it only runs when CPB is present.

Fixes: 14eb1c96e3a3 ("cpufreq: amd-pstate: Add test module for amd-pstate driver")
Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
---
 drivers/cpufreq/amd-pstate-ut.c | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

Comments

Gautham R.Shenoy July 3, 2024, 8:58 a.m. UTC | #1
Hello Mario,

Mario Limonciello <mario.limonciello@amd.com> writes:

> cpudata->boost_supported will only be configured when a CPU actually
> supports core performance boost. Add an extra guard into the check
> to ensure it only runs when CPB is present.
>
> Fixes: 14eb1c96e3a3 ("cpufreq: amd-pstate: Add test module for amd-pstate driver")
> Signed-off-by: Mario Limonciello <mario.limonciello@amd.com>
> ---
>  drivers/cpufreq/amd-pstate-ut.c | 18 +++++++++---------
>  1 file changed, 9 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/cpufreq/amd-pstate-ut.c b/drivers/cpufreq/amd-pstate-ut.c
> index b7318669485e..b011c729fcba 100644
> --- a/drivers/cpufreq/amd-pstate-ut.c
> +++ b/drivers/cpufreq/amd-pstate-ut.c
> @@ -232,21 +232,21 @@ static void amd_pstate_ut_check_freq(u32 index)
>  			goto skip_test;
>  		}
>  
> -		if (cpudata->boost_supported) {
> -			if ((policy->max == cpudata->max_freq) ||
> -					(policy->max == nominal_freq_khz))
> -				amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_PASS;
> -			else {
> +		if (cpu_feature_enabled(X86_FEATURE_CPB)) {
> +			if (!cpudata->boost_supported) {
> +				amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
> +				pr_err("%s cpu%d must support boost!\n", __func__, cpu);
> +				goto skip_test;
> +			}
> +			if ((policy->max != cpudata->max_freq) &&
> +			    (policy->max != nominal_freq_khz)) {

Writing a different value into
/sys/devices/system/cpu/cpuX/cpufreq/scaling_max_freq, updates the
policy->max for cpuX.

So if a user runs this test case after someone has changed the
scaling_max_freq, the test case will fail. While this is not due to your
patch, I wonder if this is valid test-case.

>  				amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
>  				pr_err("%s cpu%d policy_max=%d should be equal cpu_max=%d or cpu_nominal=%d !\n",
>  					__func__, cpu, policy->max, cpudata->max_freq,
>  					nominal_freq_khz);
>  				goto skip_test;
>  			}
> -		} else {
> -			amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
> -			pr_err("%s cpu%d must support boost!\n", __func__, cpu);
> -			goto skip_test;
> +			amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_PASS;
>  		}
>  		cpufreq_cpu_put(policy);
>  	}
> -- 
> 2.43.0
--
Thanks and Regards
gautham.
diff mbox series

Patch

diff --git a/drivers/cpufreq/amd-pstate-ut.c b/drivers/cpufreq/amd-pstate-ut.c
index b7318669485e..b011c729fcba 100644
--- a/drivers/cpufreq/amd-pstate-ut.c
+++ b/drivers/cpufreq/amd-pstate-ut.c
@@ -232,21 +232,21 @@  static void amd_pstate_ut_check_freq(u32 index)
 			goto skip_test;
 		}
 
-		if (cpudata->boost_supported) {
-			if ((policy->max == cpudata->max_freq) ||
-					(policy->max == nominal_freq_khz))
-				amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_PASS;
-			else {
+		if (cpu_feature_enabled(X86_FEATURE_CPB)) {
+			if (!cpudata->boost_supported) {
+				amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
+				pr_err("%s cpu%d must support boost!\n", __func__, cpu);
+				goto skip_test;
+			}
+			if ((policy->max != cpudata->max_freq) &&
+			    (policy->max != nominal_freq_khz)) {
 				amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
 				pr_err("%s cpu%d policy_max=%d should be equal cpu_max=%d or cpu_nominal=%d !\n",
 					__func__, cpu, policy->max, cpudata->max_freq,
 					nominal_freq_khz);
 				goto skip_test;
 			}
-		} else {
-			amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_FAIL;
-			pr_err("%s cpu%d must support boost!\n", __func__, cpu);
-			goto skip_test;
+			amd_pstate_ut_cases[index].result = AMD_PSTATE_UT_RESULT_PASS;
 		}
 		cpufreq_cpu_put(policy);
 	}