diff options
Diffstat (limited to 'tools/testing/selftests/resctrl/cmt_test.c')
| -rw-r--r-- | tools/testing/selftests/resctrl/cmt_test.c | 32 | 
1 files changed, 29 insertions, 3 deletions
diff --git a/tools/testing/selftests/resctrl/cmt_test.c b/tools/testing/selftests/resctrl/cmt_test.c index a14d46353865..604690cd8b3e 100644 --- a/tools/testing/selftests/resctrl/cmt_test.c +++ b/tools/testing/selftests/resctrl/cmt_test.c @@ -27,6 +27,33 @@ static int cmt_setup(struct resctrl_val_param *p)  	return 0;  } +static int show_results_info(unsigned long sum_llc_val, int no_of_bits, +			     unsigned long cache_span, unsigned long max_diff, +			     unsigned long max_diff_percent, unsigned long num_of_runs, +			     bool platform) +{ +	unsigned long avg_llc_val = 0; +	float diff_percent; +	long avg_diff = 0; +	int ret; + +	avg_llc_val = sum_llc_val / num_of_runs; +	avg_diff = (long)abs(cache_span - avg_llc_val); +	diff_percent = ((float)cache_span - avg_llc_val) / cache_span * 100; + +	ret = platform && abs((int)diff_percent) > max_diff_percent && +	      abs(avg_diff) > max_diff; + +	ksft_print_msg("%s Check cache miss rate within %lu%%\n", +		       ret ? "Fail:" : "Pass:", max_diff_percent); + +	ksft_print_msg("Percent diff=%d\n", abs((int)diff_percent)); + +	show_cache_info(no_of_bits, avg_llc_val, cache_span, false); + +	return ret; +} +  static int check_results(struct resctrl_val_param *param, size_t span, int no_of_bits)  {  	char *token_array[8], temp[512]; @@ -58,9 +85,8 @@ static int check_results(struct resctrl_val_param *param, size_t span, int no_of  	}  	fclose(fp); -	return show_cache_info(sum_llc_occu_resc, no_of_bits, span, -			       MAX_DIFF, MAX_DIFF_PERCENT, runs - 1, -			       true, true); +	return show_results_info(sum_llc_occu_resc, no_of_bits, span, +				 MAX_DIFF, MAX_DIFF_PERCENT, runs - 1, true);  }  void cmt_test_cleanup(void)  | 
