[PATCH v5] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists
From: Richard Cheng
Date: Thu Aug 20 2026 - 20:39:30 EST
L3_CAT requires an exclusive cache portion to test cache allocation.
This means that the cache portion used by the test can't overlap with
cache portions into which other agents may allocate.
Some platforms legitimately report every cache portion as shareable,
leaving no exclusive cache portion for the test and causing L3_CAT to
fail.
Skip the L3_CAT when the platform has no exclusive cache portion that
the test can use.
Tested-by: Chen Yu <yu.c.chen@xxxxxxxxx>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>
Signed-off-by: Richard Cheng <icheng@xxxxxxxxxx>
---
Changelog:
v4 -> v5:
- Split the patch from the arm64-specific series and post it standalone
- Reword the commit message
- Make the code comment and diagnostic platform-neutral and describe the
exclusive-cache-portion requirement.
Best regards,
Richard Cheng.
---
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 371a2f26dc47..0a417267dd74 100644
--- a/tools/testing/selftests/resctrl/cat_test.c
+++ b/tools/testing/selftests/resctrl/cat_test.c
@@ -357,11 +357,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;
+
+ /*
+ * Test requires an exclusive cache portion. Some platforms 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, test requires an exclusive cache portion\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,
};
base-commit: a4ff2be345d0abc943da8dd8da98151843b750dc
--
2.43.0