On Thu, 28 May 2026, Richard Cheng wrote: > 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 <[email protected]> > Signed-off-by: Richard Cheng <[email protected]> > --- > 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, > }; >
Reviewed-by: Ilpo Järvinen <[email protected]> Nit, the patch numbering and the numbering used in the coverletter did not match. -- i.

