From: Babu Moger <babu.moger@amd.com>
To: <corbet@lwn.net>, <tony.luck@intel.com>,
<reinette.chatre@intel.com>, <tglx@linutronix.de>,
<mingo@redhat.com>, <bp@alien8.de>, <dave.hansen@linux.intel.com>
Cc: <Dave.Martin@arm.com>, <james.morse@arm.com>,
<babu.moger@amd.com>, <x86@kernel.org>, <hpa@zytor.com>,
<akpm@linux-foundation.org>, <rostedt@goodmis.org>,
<paulmck@kernel.org>, <pawan.kumar.gupta@linux.intel.com>,
<kees@kernel.org>, <arnd@arndb.de>, <fvdl@google.com>,
<seanjc@google.com>, <thomas.lendacky@amd.com>,
<yosry.ahmed@linux.dev>, <xin@zytor.com>, <sohil.mehta@intel.com>,
<kai.huang@intel.com>, <xiaoyao.li@intel.com>,
<peterz@infradead.org>, <mario.limonciello@amd.com>,
<xin3.li@intel.com>, <perry.yuan@amd.com>,
<chang.seok.bae@intel.com>, <linux-doc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <peternewman@google.com>,
<eranian@google.com>, <gautham.shenoy@amd.com>
Subject: [PATCH v17 12/33] fs/resctrl: Introduce mbm_cntr_cfg to track assignable counters per domain
Date: Thu, 14 Aug 2025 21:25:16 -0500 [thread overview]
Message-ID: <82e821e046eb1d4ea8780bbd7339a7e5aa09c621.1755224735.git.babu.moger@amd.com> (raw)
In-Reply-To: <cover.1755224735.git.babu.moger@amd.com>
The "mbm_event" counter assignment mode allows users to assign a hardware
counter to an RMID, event pair and monitor bandwidth usage as long as it is
assigned. The hardware continues to track the assigned counter until it is
explicitly unassigned by the user. Counters are assigned/unassigned at
monitoring domain level.
Manage a monitoring domain's hardware counters using a per monitoring
domain array of struct mbm_cntr_cfg that is indexed by the hardware
counter ID. A hardware counter's configuration contains the MBM event
ID and points to the monitoring group that it is assigned to, with a NULL
pointer meaning that the hardware counter is available for assignment.
There is no direct way to determine which hardware counters are assigned
to a particular monitoring group. Check every entry of every hardware
counter configuration array in every monitoring domain to query which
MBM events of a monitoring group is tracked by hardware. Such queries are
acceptable because of a very small number of assignable counters (32
to 64).
Suggested-by: Peter Newman <peternewman@google.com>
Signed-off-by: Babu Moger <babu.moger@amd.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
---
v17: No changes.
v16: Added Reviewed-by tag.
v15: Minor changelog update.
Removed evt_cfg from struct mbm_cntr_cfg based on the discussion.
https://lore.kernel.org/lkml/887bad33-7f4a-4b6d-95a7-fdfe0451f42b@intel.com/
v14: Updated code documentation and changelog.
Fixed up the indentation in resctrl.h.
Changed subject line to fs/resctrl.
v13: Resolved conflicts caused by the recent FS/ARCH code restructure.
The files monitor.c/rdtgroup.c have been split between FS and ARCH directories.
v12: Fixed the struct mbm_cntr_cfg code documentation.
Removed few strange charactors in changelog.
Added the counter range for better understanding.
Moved the struct mbm_cntr_cfg definition to resctrl/internal.h as
suggested by James.
v11: Refined the change log based on Reinette's feedback.
Fixed few style issues.
v10: Patch changed completely to handle the counters at domain level.
https://lore.kernel.org/lkml/CALPaoCj+zWq1vkHVbXYP0znJbe6Ke3PXPWjtri5AFgD9cQDCUg@mail.gmail.com/
Removed Reviewed-by tag.
Did not see the need to add cntr_id in mbm_state structure. Not used in the code.
v9: Added Reviewed-by tag. No other changes.
v8: Minor commit message changes.
v7: Added check mbm_cntr_assignable for allocating bitmap mbm_cntr_map
v6: New patch to add domain level assignment.
---
fs/resctrl/rdtgroup.c | 8 ++++++++
include/linux/resctrl.h | 15 +++++++++++++++
2 files changed, 23 insertions(+)
diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
index 9b97cadbb5c5..ce1c894dab18 100644
--- a/fs/resctrl/rdtgroup.c
+++ b/fs/resctrl/rdtgroup.c
@@ -4032,6 +4032,7 @@ static void domain_destroy_mon_state(struct rdt_mon_domain *d)
{
int idx;
+ kfree(d->cntr_cfg);
bitmap_free(d->rmid_busy_llc);
for_each_mbm_idx(idx) {
kfree(d->mbm_states[idx]);
@@ -4115,6 +4116,13 @@ static int domain_setup_mon_state(struct rdt_resource *r, struct rdt_mon_domain
goto cleanup;
}
+ if (resctrl_is_mbm_enabled() && r->mon.mbm_cntr_assignable) {
+ tsize = sizeof(*d->cntr_cfg);
+ d->cntr_cfg = kcalloc(r->mon.num_mbm_cntrs, tsize, GFP_KERNEL);
+ if (!d->cntr_cfg)
+ goto cleanup;
+ }
+
return 0;
cleanup:
bitmap_free(d->rmid_busy_llc);
diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
index 919806122c50..e013caba6641 100644
--- a/include/linux/resctrl.h
+++ b/include/linux/resctrl.h
@@ -156,6 +156,18 @@ struct rdt_ctrl_domain {
u32 *mbps_val;
};
+/**
+ * struct mbm_cntr_cfg - Assignable counter configuration.
+ * @evtid: MBM event to which the counter is assigned. Only valid
+ * if @rdtgroup is not NULL.
+ * @rdtgrp: resctrl group assigned to the counter. NULL if the
+ * counter is free.
+ */
+struct mbm_cntr_cfg {
+ enum resctrl_event_id evtid;
+ struct rdtgroup *rdtgrp;
+};
+
/**
* struct rdt_mon_domain - group of CPUs sharing a resctrl monitor resource
* @hdr: common header for different domain types
@@ -168,6 +180,8 @@ struct rdt_ctrl_domain {
* @cqm_limbo: worker to periodically read CQM h/w counters
* @mbm_work_cpu: worker CPU for MBM h/w counters
* @cqm_work_cpu: worker CPU for CQM h/w counters
+ * @cntr_cfg: array of assignable counters' configuration (indexed
+ * by counter ID)
*/
struct rdt_mon_domain {
struct rdt_domain_hdr hdr;
@@ -178,6 +192,7 @@ struct rdt_mon_domain {
struct delayed_work cqm_limbo;
int mbm_work_cpu;
int cqm_work_cpu;
+ struct mbm_cntr_cfg *cntr_cfg;
};
/**
--
2.34.1
next prev parent reply other threads:[~2025-08-15 2:27 UTC|newest]
Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-08-15 2:25 [PATCH v17 00/33] x86,fs/resctrl: Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2025-08-15 2:25 ` [PATCH v17 01/33] x86,fs/resctrl: Consolidate monitor event descriptions Babu Moger
2025-08-15 2:25 ` [PATCH v17 02/33] x86,fs/resctrl: Replace architecture event enabled checks Babu Moger
2025-08-15 2:25 ` [PATCH v17 03/33] x86/resctrl: Remove 'rdt_mon_features' global variable Babu Moger
2025-08-15 2:25 ` [PATCH v17 04/33] x86,fs/resctrl: Prepare for more monitor events Babu Moger
2025-08-15 2:25 ` [PATCH v17 05/33] x86/cpufeatures: Add support for Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2025-08-15 2:25 ` [PATCH v17 06/33] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2025-08-15 2:25 ` [PATCH v17 07/33] x86,fs/resctrl: Consolidate monitoring related data from rdt_resource Babu Moger
2025-08-15 2:25 ` [PATCH v17 08/33] x86,fs/resctrl: Detect Assignable Bandwidth Monitoring feature details Babu Moger
2025-09-03 2:29 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 09/33] x86/resctrl: Add support to enable/disable AMD ABMC feature Babu Moger
2025-08-15 2:25 ` [PATCH v17 10/33] fs/resctrl: Introduce the interface to display monitoring modes Babu Moger
2025-09-03 2:30 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 11/33] fs/resctrl: Add resctrl file to display number of assignable counters Babu Moger
2025-09-03 2:30 ` Reinette Chatre
2025-08-15 2:25 ` Babu Moger [this message]
2025-08-15 2:25 ` [PATCH v17 13/33] fs/resctrl: Introduce interface to display number of free MBM counters Babu Moger
2025-09-03 2:31 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 14/33] x86/resctrl: Add data structures and definitions for ABMC assignment Babu Moger
2025-08-15 2:25 ` [PATCH v17 15/33] fs/resctrl: Introduce event configuration field in struct mon_evt Babu Moger
2025-09-03 2:32 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 16/33] x86,fs/resctrl: Implement resctrl_arch_config_cntr() to assign a counter with ABMC Babu Moger
2025-08-15 2:25 ` [PATCH v17 17/33] fs/resctrl: Add the functionality to assign MBM events Babu Moger
2025-09-03 2:32 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 18/33] fs/resctrl: Add the functionality to unassign " Babu Moger
2025-09-03 2:33 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 19/33] fs/resctrl: Pass struct rdtgroup instead of individual members Babu Moger
2025-08-15 2:25 ` [PATCH v17 20/33] fs/resctrl: Introduce counter ID read, reset calls in mbm_event mode Babu Moger
2025-09-03 2:33 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 21/33] x86/resctrl: Refactor resctrl_arch_rmid_read() Babu Moger
2025-08-15 2:25 ` [PATCH v17 22/33] x86/resctrl: Implement resctrl_arch_reset_cntr() and resctrl_arch_cntr_read() Babu Moger
2025-09-03 2:34 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 23/33] fs/resctrl: Support counter read/reset with mbm_event assignment mode Babu Moger
2025-09-03 2:34 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 24/33] fs/resctrl: Add event configuration directory under info/L3_MON/ Babu Moger
2025-09-03 2:35 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 25/33] fs/resctrl: Provide interface to update the event configurations Babu Moger
2025-09-03 2:41 ` Reinette Chatre
2025-09-03 17:38 ` Moger, Babu
2025-09-03 17:55 ` Reinette Chatre
2025-09-03 18:32 ` Moger, Babu
2025-09-03 20:52 ` Reinette Chatre
2025-09-03 22:03 ` Moger, Babu
2025-08-15 2:25 ` [PATCH v17 26/33] fs/resctrl: Introduce mbm_assign_on_mkdir to enable assignments on mkdir Babu Moger
2025-09-03 2:44 ` Reinette Chatre
2025-09-03 18:53 ` Moger, Babu
2025-08-15 2:25 ` [PATCH v17 27/33] fs/resctrl: Auto assign counters on mkdir and clean up on group removal Babu Moger
2025-09-03 2:45 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 28/33] fs/resctrl: Introduce mbm_L3_assignments to list assignments in a group Babu Moger
2025-09-03 2:59 ` Reinette Chatre
2025-09-03 19:16 ` Moger, Babu
2025-08-15 2:25 ` [PATCH v17 29/33] fs/resctrl: Introduce the interface to modify " Babu Moger
2025-09-03 3:00 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 30/33] fs/resctrl: Disable BMEC event configuration when mbm_event mode is enabled Babu Moger
2025-09-03 3:01 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 31/33] fs/resctrl: Introduce the interface to switch between monitor modes Babu Moger
2025-09-03 3:11 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 32/33] x86/resctrl: Configure mbm_event mode if supported Babu Moger
2025-09-03 3:13 ` Reinette Chatre
2025-08-15 2:25 ` [PATCH v17 33/33] MAINTAINERS: resctrl: add myself as reviewer Babu Moger
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=82e821e046eb1d4ea8780bbd7339a7e5aa09c621.1755224735.git.babu.moger@amd.com \
--to=babu.moger@amd.com \
--cc=Dave.Martin@arm.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=bp@alien8.de \
--cc=chang.seok.bae@intel.com \
--cc=corbet@lwn.net \
--cc=dave.hansen@linux.intel.com \
--cc=eranian@google.com \
--cc=fvdl@google.com \
--cc=gautham.shenoy@amd.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=kai.huang@intel.com \
--cc=kees@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mario.limonciello@amd.com \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=perry.yuan@amd.com \
--cc=peternewman@google.com \
--cc=peterz@infradead.org \
--cc=reinette.chatre@intel.com \
--cc=rostedt@goodmis.org \
--cc=seanjc@google.com \
--cc=sohil.mehta@intel.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
--cc=xiaoyao.li@intel.com \
--cc=xin3.li@intel.com \
--cc=xin@zytor.com \
--cc=yosry.ahmed@linux.dev \
/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;
as well as URLs for NNTP newsgroup(s).