Linux Kernel Selftest development
 help / color / mirror / Atom feed
* [PATCH] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists
@ 2026-05-26  2:42 Richard Cheng
  2026-05-27  3:17 ` Chen, Yu C
  0 siblings, 1 reply; 2+ messages in thread
From: Richard Cheng @ 2026-05-26  2:42 UTC (permalink / raw)
  To: tony.luck
  Cc: reinette.chatre, shuah, Dave.Martin, james.morse, babu.moger,
	linux-kernel, linux-kselftest, fenghuay, newtonl, kristinc,
	kaihengf, kobak, Richard Cheng

L3_CAT measures cache isolation, which requires at least one ache bit
not shared with non-CPU agents, i.e. cbm_mask & ~shareable_bits != 0 .
On MPAM, shareable_bits == cbm_mask is a legitimate state, so there
might be situations that no bit can be reported as exclusive.

Previously get_mask_no_shareable() does the check inside cat_run_test(),
which returns -1 silently and surfaced as a failure for arm64 MPAM.

Implement cat_feature_check() to run the same check at feature-check
time, it prints a diagnostic and return false so the test case itself
can know when to skip.

Signed-off-by: Richard Cheng <icheng@nvidia.com>
---
 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 37ca70523ed2..6a25efa59837 100644
--- a/tools/testing/selftests/resctrl/cat_test.c
+++ b/tools/testing/selftests/resctrl/cat_test.c
@@ -383,11 +383,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 if that 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


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2026-05-27  3:17 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-26  2:42 [PATCH] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists Richard Cheng
2026-05-27  3:17 ` Chen, Yu C

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox