[PATCH v2 1/3] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists
From: Richard Cheng
Date: Thu May 28 2026 - 06:36:41 EST
L3_CAT measures cache isolation, which requires at least one cache bit
that is not shared with non-CPU agents, i.e. cbm_mask & ~shareable_bits
must be non-zero. On MPAM, shareable_bits == cbm_mask is a legitimate
state, so there are situations in which no bit can be reported as
exclusive.
Previously get_mask_no_shareable() was invoked inside cat_run_test()
and silently returned -1, which surfaced as a test failure on arm64
MPAM systems.
Implement cat_feature_check() to perform the same check at feature-check
time. It prints a diagnostic and returns false so the test case is
skipped instead of failing.
Tested-by: Chen Yu <yu.c.chen@xxxxxxxxx>
Signed-off-by: Richard Cheng <icheng@xxxxxxxxxx>
---
tools/testing/selftests/resctrl/cat_test.c | 23 +++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c
index f00b622c1460..dc414e55ae94 100644
--- a/tools/testing/selftests/resctrl/cat_test.c
+++ b/tools/testing/selftests/resctrl/cat_test.c
@@ -378,11 +378,32 @@ static bool noncont_cat_feature_check(const struct resctrl_test *test)
return resource_info_file_exists(test->resource, "sparse_masks");
}
+static bool cat_feature_check(const struct resctrl_test *test)
+{
+ unsigned long mask;
+
+ if (!test_resource_feature_check(test))
+ return false;
+
+ /*
+ * The CAT isolation measurement needs a cache portion that no
+ * other agent shares. On MPAM the kernel may legitimately report
+ * all bits as shareable; skip the test if that is the case.
+ */
+ if (get_mask_no_shareable(test->resource, &mask)) {
+ ksft_print_msg("All %s bits are shareable; cannot measure CAT isolation\n",
+ test->resource);
+ return false;
+ }
+
+ return true;
+}
+
struct resctrl_test l3_cat_test = {
.name = "L3_CAT",
.group = "CAT",
.resource = "L3",
- .feature_check = test_resource_feature_check,
+ .feature_check = cat_feature_check,
.run_test = cat_run_test,
.cleanup = cat_test_cleanup,
};
--
2.43.0