On Tue, 7 May 2024, Reinette Chatre wrote:
Hi John,
On 5/7/2024 6:25 PM, John Hubbard wrote:
On 5/7/24 6:21 PM, Reinette Chatre wrote:
Hi John,
...
The following (what was in v1) looks good to me. What am I missing?
diff --git a/tools/testing/selftests/resctrl/cmt_test.c b/tools/testing/selftests/resctrl/cmt_test.c index a81f91222a89..05a241519ae8 100644 --- a/tools/testing/selftests/resctrl/cmt_test.c +++ b/tools/testing/selftests/resctrl/cmt_test.c @@ -40,11 +40,11 @@ static int show_results_info(unsigned long sum_llc_val, int no_of_bits, int ret; avg_llc_val = sum_llc_val / num_of_runs; - avg_diff = (long)abs(cache_span - avg_llc_val); + avg_diff = (long)(cache_span - avg_llc_val);
This deletes the abs() call, because I incorrectly let clang's warning lead me to believe that the abs() call was a no-op. But both you and Ilpo pointed out that the math breaks if you do that.
To me the extra abs() was unnecessary anyway ...
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; + labs(avg_diff) > max_diff;
.. because it is repeated here.
Yes, there are two *abs() calls in this function.
In this case is okay to remove the first one since it didn't remove absolute value completely, whereas in the MBA/MBM cases v1 removed *abs() call entirely which was wrong thing to do.
I explicitly noted in my v1 comment that this CMT change is okay but the other two were not.