[RFC patch 8/9] selftests/resctrl: Add support for HiSilicon MBM/MBA test

Yifan Wu wuyifan50 at huawei.com
Tue Mar 3 20:03:33 PST 2026


This commit adds the support to check and test this feature on HiSilicon
platform.

Specifically, this is because on HiSilicon platform, the mbm_total_bytes
counter for MBM/MBA is located in the MB_MON, which is distinct from other
monitoring paths.

Signed-off-by: Yifan Wu <wuyifan50 at huawei.com>
---
 tools/testing/selftests/resctrl/mba_test.c | 24 +++++++++++++++++++---
 tools/testing/selftests/resctrl/mbm_test.c | 23 +++++++++++++++++----
 2 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/tools/testing/selftests/resctrl/mba_test.c b/tools/testing/selftests/resctrl/mba_test.c
index c41914f6a2e6..ebed2d2d6ce0 100644
--- a/tools/testing/selftests/resctrl/mba_test.c
+++ b/tools/testing/selftests/resctrl/mba_test.c
@@ -202,14 +202,32 @@ static int mba_run_test(const struct resctrl_test *test, const struct user_param
 
 static bool mba_feature_check(const struct resctrl_test *test)
 {
-	return test_resource_feature_check(test) &&
-	       resctrl_mon_feature_exists("L3_MON", "mbm_local_bytes");
+	unsigned int vendor = get_vendor();
+	bool feature_exists = false;
+
+	switch (vendor) {
+	case ARCH_INTEL:
+		feature_exists = test_resource_feature_check(test) &&
+					resctrl_mon_feature_exists("L3_MON", "mbm_local_bytes");
+		break;
+
+	case ARCH_HISILICON:
+		feature_exists = test_resource_feature_check(test) &&
+					resctrl_mon_feature_exists("MB_MON", "mbm_total_bytes");
+		break;
+
+	default:
+		break;
+	}
+
+	return feature_exists;
+
 }
 
 struct resctrl_test mba_test = {
 	.name = "MBA",
 	.resource = "MB",
-	.vendor_specific = ARCH_INTEL,
+	.vendor_specific = ARCH_INTEL | ARCH_HISILICON,
 	.feature_check = mba_feature_check,
 	.run_test = mba_run_test,
 	.cleanup = mba_test_cleanup,
diff --git a/tools/testing/selftests/resctrl/mbm_test.c b/tools/testing/selftests/resctrl/mbm_test.c
index 1d4ef268db5a..44bb450398e7 100644
--- a/tools/testing/selftests/resctrl/mbm_test.c
+++ b/tools/testing/selftests/resctrl/mbm_test.c
@@ -161,14 +161,29 @@ static int mbm_run_test(const struct resctrl_test *test, const struct user_param
 
 static bool mbm_feature_check(const struct resctrl_test *test)
 {
-	return resctrl_mon_feature_exists("L3_MON", "mbm_total_bytes") &&
-	       resctrl_mon_feature_exists("L3_MON", "mbm_local_bytes");
-}
+	unsigned int vendor = get_vendor();
+	bool feature_exists = false;
+
+	switch (vendor) {
+	case ARCH_INTEL:
+		feature_exists = resctrl_mon_feature_exists("L3_MON", "mbm_total_bytes") &&
+					resctrl_mon_feature_exists("L3_MON", "mbm_local_bytes");
+		break;
+
+	case ARCH_HISILICON:
+		feature_exists = resctrl_mon_feature_exists("MB_MON", "mbm_total_bytes");
+		break;
 
+	default:
+		break;
+	}
+
+	return feature_exists;
+}
 struct resctrl_test mbm_test = {
 	.name = "MBM",
 	.resource = "MB",
-	.vendor_specific = ARCH_INTEL,
+	.vendor_specific = ARCH_INTEL | ARCH_HISILICON,
 	.feature_check = mbm_feature_check,
 	.run_test = mbm_run_test,
 	.cleanup = mbm_test_cleanup,
-- 
2.33.0




More information about the linux-arm-kernel mailing list