From: Ben Horgan <ben.horgan@arm.com>
To: linux-kernel@vger.kernel.org
Cc: tony.luck@intel.com, reinette.chatre@intel.com,
Dave.Martin@arm.com, james.morse@arm.com, babu.moger@amd.com,
tglx@kernel.org, mingo@redhat.com, bp@alien8.de,
dave.hansen@linux.intel.com, x86@kernel.org, hpa@zytor.com,
ben.horgan@arm.com, fenghuay@nvidia.com,
tan.shaopeng@fujitsu.com
Subject: [PATCH v2 1/6] x86,fs/resctrl: Make resctrl_arch_is_evt_configurable() aware of mbm_assign_mode
Date: Fri, 13 Mar 2026 17:45:19 +0000 [thread overview]
Message-ID: <20260313174524.3482767-2-ben.horgan@arm.com> (raw)
In-Reply-To: <20260313174524.3482767-1-ben.horgan@arm.com>
The features BMEC and ABMC provide separate interfaces to configuring which
bandwidth types a counter tracks. Currently
resctrl_arch_is_evt_configurable() only ever returns true if BMEC is
supported.
ABMC is useful even when BMEC is supported as it also provides counter
assignment which reduces the number of hardware monitors a system
requires. It is an architectural detail that ABMC provides counter
configurability without requiring the prior feature, BMEC. On MPAM systems
these two features are independent and the bandwidth types are limited to a
choice of only read or write.
In order to give resctrl the information to support these features
independently extend resctrl_arch_is_evt_configurable() to report whether
events are configurable when using the mbm_event counter assignment mode.
Signed-off-by: Ben Horgan <ben.horgan@arm.com>
---
arch/x86/kernel/cpu/resctrl/core.c | 12 ++++++++++--
fs/resctrl/monitor.c | 4 ++--
include/linux/resctrl.h | 2 +-
3 files changed, 13 insertions(+), 5 deletions(-)
diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
index 7667cf7c4e94..8c041c5f07ab 100644
--- a/arch/x86/kernel/cpu/resctrl/core.c
+++ b/arch/x86/kernel/cpu/resctrl/core.c
@@ -877,11 +877,19 @@ bool rdt_cpu_has(int flag)
return ret;
}
-bool resctrl_arch_is_evt_configurable(enum resctrl_event_id evt)
+bool resctrl_arch_is_evt_configurable(enum resctrl_event_id evt, bool per_cntr)
{
- if (!rdt_cpu_has(X86_FEATURE_BMEC))
+ if (!per_cntr && !rdt_cpu_has(X86_FEATURE_BMEC))
return false;
+ if (per_cntr && !rdt_cpu_has(X86_FEATURE_ABMC))
+ return false;
+
+ /*
+ * When ABMC is used the mbm_local and mbm_total events are enabled
+ * based on the equivalently named cpu features. (In order to allow
+ * fallback to the default counter assignment mode).
+ */
switch (evt) {
case QOS_L3_MBM_TOTAL_EVENT_ID:
return rdt_cpu_has(X86_FEATURE_CQM_MBM_TOTAL);
diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c
index 49f3f6b846b2..d25622ee22c5 100644
--- a/fs/resctrl/monitor.c
+++ b/fs/resctrl/monitor.c
@@ -1854,12 +1854,12 @@ int resctrl_l3_mon_resource_init(void)
if (ret)
return ret;
- if (resctrl_arch_is_evt_configurable(QOS_L3_MBM_TOTAL_EVENT_ID)) {
+ if (resctrl_arch_is_evt_configurable(QOS_L3_MBM_TOTAL_EVENT_ID, false)) {
mon_event_all[QOS_L3_MBM_TOTAL_EVENT_ID].configurable = true;
resctrl_file_fflags_init("mbm_total_bytes_config",
RFTYPE_MON_INFO | RFTYPE_RES_CACHE);
}
- if (resctrl_arch_is_evt_configurable(QOS_L3_MBM_LOCAL_EVENT_ID)) {
+ if (resctrl_arch_is_evt_configurable(QOS_L3_MBM_LOCAL_EVENT_ID, false)) {
mon_event_all[QOS_L3_MBM_LOCAL_EVENT_ID].configurable = true;
resctrl_file_fflags_init("mbm_local_bytes_config",
RFTYPE_MON_INFO | RFTYPE_RES_CACHE);
diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
index 006e57fd7ca5..4ae63233b506 100644
--- a/include/linux/resctrl.h
+++ b/include/linux/resctrl.h
@@ -419,7 +419,7 @@ bool resctrl_enable_mon_event(enum resctrl_event_id eventid, bool any_cpu,
bool resctrl_is_mon_event_enabled(enum resctrl_event_id eventid);
-bool resctrl_arch_is_evt_configurable(enum resctrl_event_id evt);
+bool resctrl_arch_is_evt_configurable(enum resctrl_event_id evt, bool per_cntr);
static inline bool resctrl_is_mbm_event(enum resctrl_event_id eventid)
{
--
2.43.0
next prev parent reply other threads:[~2026-03-13 17:45 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-13 17:45 [PATCH v2 0/6] x86,fs/resctrl: Pave the way for MPAM counter assignment Ben Horgan
2026-03-13 17:45 ` Ben Horgan [this message]
2026-03-13 17:45 ` [PATCH v2 2/6] fs/resctrl: Tidy up the error path in resctrl_mkdir_event_configs() Ben Horgan
2026-03-13 17:45 ` [PATCH v2 3/6] fs/resctrl: Make 'event_filter' files read only if they're not configurable Ben Horgan
2026-03-13 18:33 ` Luck, Tony
2026-03-16 9:51 ` Ben Horgan
2026-03-16 16:27 ` Luck, Tony
2026-03-16 17:02 ` Ben Horgan
2026-03-16 17:29 ` Reinette Chatre
2026-03-17 12:05 ` Ben Horgan
2026-03-13 17:45 ` [PATCH v2 4/6] fs/resctrl: Disallow the software controller when mbm counters are assignable Ben Horgan
2026-03-16 21:35 ` Reinette Chatre
2026-03-17 11:13 ` Ben Horgan
2026-03-17 17:17 ` Reinette Chatre
2026-03-18 15:44 ` Ben Horgan
2026-03-18 15:55 ` Ben Horgan
2026-03-18 22:17 ` Reinette Chatre
2026-03-13 17:45 ` [PATCH v2 5/6] x86,fs/resctrl: Add resctrl_arch_mbm_cntr_assign_fixed() Ben Horgan
2026-03-13 17:45 ` [PATCH v2 6/6] arm_mpam: resctrl: Adapt to new or changed resctrl arch functions Ben Horgan
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260313174524.3482767-2-ben.horgan@arm.com \
--to=ben.horgan@arm.com \
--cc=Dave.Martin@arm.com \
--cc=babu.moger@amd.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=fenghuay@nvidia.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=reinette.chatre@intel.com \
--cc=tan.shaopeng@fujitsu.com \
--cc=tglx@kernel.org \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®