Hi Babu,
On 6/5/24 2:36 PM, Babu Moger wrote:
The selftest noncont_cat_run_test fails on AMD with the warnings. Reason is, AMD supports non contiguous CBM masks but does not report it via CPUID.
Update noncont_cat_run_test to check for the vendor when verifying CPUID.
Fixes: ae638551ab64 ("selftests/resctrl: Add non-contiguous CBMs CAT test") Signed-off-by: Babu Moger babu.moger@amd.com
This was part of the series https://lore.kernel.org/lkml/cover.1708637563.git.babu.moger@amd.com/ Sending this as a separate fix per review comments.
tools/testing/selftests/resctrl/cat_test.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c index d4dffc934bc3..b2988888786e 100644 --- a/tools/testing/selftests/resctrl/cat_test.c +++ b/tools/testing/selftests/resctrl/cat_test.c @@ -308,7 +308,7 @@ static int noncont_cat_run_test(const struct resctrl_test *test, else return -EINVAL;
- if (sparse_masks != ((ecx >> 3) & 1)) {
- if ((get_vendor() == ARCH_INTEL) && sparse_masks != ((ecx >> 3) & 1)) { ksft_print_msg("CPUID output doesn't match 'sparse_masks' file content!\n"); return 1; }
Since AMD does not report this support via CPUID it does not seem appropriate to use CPUID at all on AMD when doing the hardware check. I think the above check makes it difficult to understand what is different on AMD.
What if instead there is a new function, for example, "static bool arch_supports_noncont_cat(const struct resctrl_test *test)" that returns true if the hardware supports non-contiguous CBM?
The vendor check can be in there to make it obvious what is going on:
/* AMD always supports non-contiguous CBM. */ if (get_vendor() == AMD) return true;
/* CPUID check for Intel here. */
The "sparse_masks" from kernel can then be checked against hardware support with an appropriate (no mention of CPUID) error message if this fails.
Reinette