Hi Shuah, Could you please consider this patch for inclusion into kselftest's "next"?
Thank you very much Reinette On 8/20/26 5:39 PM, Richard Cheng wrote: > 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 <[email protected]> > Reviewed-by: Ilpo Järvinen <[email protected]> > Signed-off-by: Richard Cheng <[email protected]> > --- > 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

