linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 11/33] fs/resctrl: Add resctrl file to display number of assignable counters
Date: Thu, 14 Aug 2025 21:25:15 -0500	[thread overview]
Message-ID: <b5016487a7d72cc24134a36ef1a9acaf735f59b3.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.

Create 'num_mbm_cntrs' resctrl file that displays the number of counters
supported in each domain. 'num_mbm_cntrs' is only visible to user space
when the system supports "mbm_event" mode.

Signed-off-by: Babu Moger <babu.moger@amd.com>
---
v17: Moved resctrl_num_mbm_cntrs_show() to fs/resctrl/monitor.c.
     Removed Reviewed-by tag.

v16: Added Reviewed-by tag.

v15: Changed "assign a hardware counter ID" to "assign a hardware counter"
     in couple of places.

v14: Minor update to changelog and user doc (resctrl.rst).
     Changed subject line to fs/resctrl.

v13: Updated the changelog.
     Added fflags RFTYPE_RES_CACHE to the file num_mbm_cntrs.
     Replaced seq_puts from seq_putc where applicable.
     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: Changed the code to display the max supported monitoring counters in
     each domain. Also updated the documentation.
     Resolved the conflict with the latest code.

v11: Renamed rdtgroup_num_mbm_cntrs_show() to resctrl_num_mbm_cntrs_show().
     Few monor text updates.

v10: No changes.

v9: Updated user document based on the comments.
    Will add a new file available_mbm_cntrs later in the series.

v8: Commit message update and documentation update.

v7: Minor commit log text changes.

v6: No changes.

v5: Changed the display name from num_cntrs to num_mbm_cntrs.
    Updated the commit message.
    Moved the patch after mbm_mode is introduced.

v4: Changed the counter name to num_cntrs. And few text changes.

v3: Changed the field name to mbm_assign_cntrs.

v2: Changed the field name to mbm_assignable_counters from abmc_counter.
---
 Documentation/filesystems/resctrl.rst | 11 +++++++++++
 fs/resctrl/internal.h                 |  2 ++
 fs/resctrl/monitor.c                  | 26 ++++++++++++++++++++++++++
 fs/resctrl/rdtgroup.c                 |  6 ++++++
 4 files changed, 45 insertions(+)

diff --git a/Documentation/filesystems/resctrl.rst b/Documentation/filesystems/resctrl.rst
index b692829fec5f..4eb27530be6f 100644
--- a/Documentation/filesystems/resctrl.rst
+++ b/Documentation/filesystems/resctrl.rst
@@ -288,6 +288,17 @@ with the following files:
 	result in misleading values or display "Unavailable" if no counter is assigned
 	to the event.
 
+"num_mbm_cntrs":
+	The maximum number of counters (total of available and assigned counters) in
+	each domain when the system supports mbm_event mode.
+
+	For example, on a system with maximum of 32 memory bandwidth monitoring
+	counters in each of its L3 domains:
+	::
+
+	  # cat /sys/fs/resctrl/info/L3_MON/num_mbm_cntrs
+	  0=32;1=32
+
 "max_threshold_occupancy":
 		Read/write file provides the largest value (in
 		bytes) at which a previously used LLC_occupancy
diff --git a/fs/resctrl/internal.h b/fs/resctrl/internal.h
index 4fbc809b11a6..e4d7aa1a8fd1 100644
--- a/fs/resctrl/internal.h
+++ b/fs/resctrl/internal.h
@@ -386,6 +386,8 @@ void *rdt_kn_parent_priv(struct kernfs_node *kn);
 
 int resctrl_mbm_assign_mode_show(struct kernfs_open_file *of, struct seq_file *s, void *v);
 
+int resctrl_num_mbm_cntrs_show(struct kernfs_open_file *of, struct seq_file *s, void *v);
+
 #ifdef CONFIG_RESCTRL_FS_PSEUDO_LOCK
 int rdtgroup_locksetup_enter(struct rdtgroup *rdtgrp);
 
diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c
index 379166134f5a..667770ecfd78 100644
--- a/fs/resctrl/monitor.c
+++ b/fs/resctrl/monitor.c
@@ -914,6 +914,30 @@ int resctrl_mbm_assign_mode_show(struct kernfs_open_file *of,
 	return 0;
 }
 
+int resctrl_num_mbm_cntrs_show(struct kernfs_open_file *of,
+			       struct seq_file *s, void *v)
+{
+	struct rdt_resource *r = rdt_kn_parent_priv(of->kn);
+	struct rdt_mon_domain *dom;
+	bool sep = false;
+
+	cpus_read_lock();
+	mutex_lock(&rdtgroup_mutex);
+
+	list_for_each_entry(dom, &r->mon_domains, hdr.list) {
+		if (sep)
+			seq_putc(s, ';');
+
+		seq_printf(s, "%d=%d", dom->hdr.id, r->mon.num_mbm_cntrs);
+		sep = true;
+	}
+	seq_putc(s, '\n');
+
+	mutex_unlock(&rdtgroup_mutex);
+	cpus_read_unlock();
+	return 0;
+}
+
 /**
  * resctrl_mon_resource_init() - Initialise global monitoring structures.
  *
@@ -959,6 +983,8 @@ int resctrl_mon_resource_init(void)
 			resctrl_enable_mon_event(QOS_L3_MBM_TOTAL_EVENT_ID);
 		if (!resctrl_is_mon_event_enabled(QOS_L3_MBM_LOCAL_EVENT_ID))
 			resctrl_enable_mon_event(QOS_L3_MBM_LOCAL_EVENT_ID);
+		resctrl_file_fflags_init("num_mbm_cntrs",
+					 RFTYPE_MON_INFO | RFTYPE_RES_CACHE);
 	}
 
 	return 0;
diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
index 90bf57910aae..9b97cadbb5c5 100644
--- a/fs/resctrl/rdtgroup.c
+++ b/fs/resctrl/rdtgroup.c
@@ -1836,6 +1836,12 @@ static struct rftype res_common_files[] = {
 		.seq_show	= rdt_default_ctrl_show,
 		.fflags		= RFTYPE_CTRL_INFO | RFTYPE_RES_CACHE,
 	},
+	{
+		.name		= "num_mbm_cntrs",
+		.mode		= 0444,
+		.kf_ops		= &rdtgroup_kf_single_ops,
+		.seq_show	= resctrl_num_mbm_cntrs_show,
+	},
 	{
 		.name		= "min_cbm_bits",
 		.mode		= 0444,
-- 
2.34.1


  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 ` Babu Moger [this message]
2025-09-03  2:30   ` [PATCH v17 11/33] fs/resctrl: Add resctrl file to display number of assignable counters Reinette Chatre
2025-08-15  2:25 ` [PATCH v17 12/33] fs/resctrl: Introduce mbm_cntr_cfg to track assignable counters per domain Babu Moger
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=b5016487a7d72cc24134a36ef1a9acaf735f59b3.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).