[PATCH] selftests/resctrl: Add ARM vendor detection and fix non-contig CBM check

Richard Cheng posted 1 patch 1 week, 6 days ago
tools/testing/selftests/resctrl/cat_test.c      |  9 +++++++--
tools/testing/selftests/resctrl/resctrl.h       |  1 +
tools/testing/selftests/resctrl/resctrl_tests.c | 11 +++++++++++
3 files changed, 19 insertions(+), 2 deletions(-)
[PATCH] selftests/resctrl: Add ARM vendor detection and fix non-contig CBM check
Posted by Richard Cheng 1 week, 6 days ago
aarch64 has no vendor_id in /proc/cpuinfo, so detect_vendor() returns 0
and arch_supports_noncont_cat() falls through to "return false".
L3_NONCONT_CAT spuriously fails on every ARM MPAM platform.

Define ARCH_ARM, short-circuite detect_vendor() to it on aarch64, and
add it to the AMD/Hygon alwasy-supports early-out in
arch_support_noncont_cat().

aarch64 has many implementers (ARM 0x41, NVIDIA 0x43, etc...) but MPAM
mandates non-contiguous CPBM uniformly, so per-implementer bits is not
needed here.

Signed-off-by: Richard Cheng <icheng@nvidia.com>
---
 tools/testing/selftests/resctrl/cat_test.c      |  9 +++++++--
 tools/testing/selftests/resctrl/resctrl.h       |  1 +
 tools/testing/selftests/resctrl/resctrl_tests.c | 11 +++++++++++
 3 files changed, 19 insertions(+), 2 deletions(-)

diff --git a/tools/testing/selftests/resctrl/cat_test.c b/tools/testing/selftests/resctrl/cat_test.c
index f00b622c1460..37ca70523ed2 100644
--- a/tools/testing/selftests/resctrl/cat_test.c
+++ b/tools/testing/selftests/resctrl/cat_test.c
@@ -292,8 +292,13 @@ static bool arch_supports_noncont_cat(const struct resctrl_test *test)
 {
 	unsigned int vendor_id = get_vendor();
 
-	/* AMD and Hygon always support non-contiguous CBM. */
-	if (vendor_id == ARCH_AMD || vendor_id == ARCH_HYGON)
+	/*
+	 * AMD and Hygon always support non-contiguous CBM.  ARM/MPAM
+	 * defines MPAMCFG_CPBM as a bitmap with no contiguity constraint
+	 * per ARM DDI 0598.
+	 */
+	if (vendor_id == ARCH_AMD || vendor_id == ARCH_HYGON ||
+	    vendor_id == ARCH_ARM)
 		return true;
 
 #if defined(__i386__) || defined(__x86_64__) /* arch */
diff --git a/tools/testing/selftests/resctrl/resctrl.h b/tools/testing/selftests/resctrl/resctrl.h
index afe635b6e48d..670e5b128b4d 100644
--- a/tools/testing/selftests/resctrl/resctrl.h
+++ b/tools/testing/selftests/resctrl/resctrl.h
@@ -40,6 +40,7 @@
 #define ARCH_INTEL	BIT(0)
 #define ARCH_AMD	BIT(1)
 #define ARCH_HYGON	BIT(2)
+#define ARCH_ARM	BIT(3)
 
 #define END_OF_TESTS	1
 
diff --git a/tools/testing/selftests/resctrl/resctrl_tests.c b/tools/testing/selftests/resctrl/resctrl_tests.c
index dbcd5eea9fbc..b97d3541fcb2 100644
--- a/tools/testing/selftests/resctrl/resctrl_tests.c
+++ b/tools/testing/selftests/resctrl/resctrl_tests.c
@@ -34,6 +34,17 @@ static unsigned int detect_vendor(void)
 	if (initialized)
 		return vendor_id;
 
+#if defined(__aarch64__)
+	/*
+	 * aarch64 has no userspace vendor_id in /proc/cpuinfo.  MPAM-capable
+	 * ARM implementations follow ARM DDI 0598; treat all aarch64 builds
+	 * as a single vendor for the purposes of resctrl selftests.
+	 */
+	vendor_id = ARCH_ARM;
+	initialized = true;
+	return vendor_id;
+#endif
+
 	inf = fopen("/proc/cpuinfo", "r");
 	if (!inf) {
 		vendor_id = 0;
-- 
2.43.0
Re: [PATCH] selftests/resctrl: Add ARM vendor detection and fix non-contig CBM check
Posted by Fenghua Yu 1 week, 6 days ago
Hi, Richard,

On 5/25/26 19:39, Richard Cheng wrote:
> aarch64 has no vendor_id in /proc/cpuinfo, so detect_vendor() returns 0
> and arch_supports_noncont_cat() falls through to "return false".
> L3_NONCONT_CAT spuriously fails on every ARM MPAM platform.
> 
> Define ARCH_ARM, short-circuite detect_vendor() to it on aarch64, and
> add it to the AMD/Hygon alwasy-supports early-out in
> arch_support_noncont_cat().
> 
> aarch64 has many implementers (ARM 0x41, NVIDIA 0x43, etc...) but MPAM
> mandates non-contiguous CPBM uniformly, so per-implementer bits is not
> needed here.
> 
> Signed-off-by: Richard Cheng <icheng@nvidia.com>

I see you have three patches for selftest. Seems they are together. But 
they are not assembled in a series like [PATCH 1/3], [PATCH 2/3], [PATCH 
3/3].

Could you please send them in a series?

Thanks.

-Fenghua
Re: [PATCH] selftests/resctrl: Add ARM vendor detection and fix non-contig CBM check
Posted by Richard Cheng 1 week, 5 days ago
On Mon, May 25, 2026 at 07:51:16PM +0800, Fenghua Yu wrote:
> Hi, Richard,
> 
> On 5/25/26 19:39, Richard Cheng wrote:
> > aarch64 has no vendor_id in /proc/cpuinfo, so detect_vendor() returns 0
> > and arch_supports_noncont_cat() falls through to "return false".
> > L3_NONCONT_CAT spuriously fails on every ARM MPAM platform.
> > 
> > Define ARCH_ARM, short-circuite detect_vendor() to it on aarch64, and
> > add it to the AMD/Hygon alwasy-supports early-out in
> > arch_support_noncont_cat().
> > 
> > aarch64 has many implementers (ARM 0x41, NVIDIA 0x43, etc...) but MPAM
> > mandates non-contiguous CPBM uniformly, so per-implementer bits is not
> > needed here.
> > 
> > Signed-off-by: Richard Cheng <icheng@nvidia.com>
> 
> I see you have three patches for selftest. Seems they are together. But they
> are not assembled in a series like [PATCH 1/3], [PATCH 2/3], [PATCH 3/3].
> 
> Could you please send them in a series?
> 
> Thanks.
> 
> -Fenghua

Hi Fenghua,

Thanks, I'll organize them in a serie and send a v2.

Best regards,
Richard Cheng.