[PATCH v5] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists

Richard Cheng posted 1 patch 1 month, 1 week ago
tools/testing/selftests/resctrl/cat_test.c | 23 +++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
[PATCH v5] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists
Posted by Richard Cheng 1 month, 1 week ago
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@intel.com>
Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Richard Cheng <icheng@nvidia.com>
---
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

Re: [PATCH v5] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists
Posted by Reinette Chatre 3 weeks, 3 days ago
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 <yu.c.chen@intel.com>
> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> Signed-off-by: Richard Cheng <icheng@nvidia.com>
> ---
> 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

Re: [PATCH v5] selftests/resctrl: Skip L3_CAT when no exclusive cache portion exists
Posted by Reinette Chatre 1 month, 1 week ago
Hi Richard,

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 <yu.c.chen@intel.com>
> Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
> Signed-off-by: Richard Cheng <icheng@nvidia.com>
> ---

Thank you very much.

Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>

Reinette