From: Reinette Chatre <reinette.chatre@intel.com>
To: Babu Moger <babu.moger@amd.com>, <corbet@lwn.net>,
<tony.luck@intel.com>, <Dave.Martin@arm.com>,
<james.morse@arm.com>, <tglx@linutronix.de>, <mingo@redhat.com>,
<bp@alien8.de>, <dave.hansen@linux.intel.com>
Cc: <x86@kernel.org>, <hpa@zytor.com>, <akpm@linux-foundation.org>,
<rostedt@goodmis.org>, <paulmck@kernel.org>, <thuth@redhat.com>,
<ardb@kernel.org>, <gregkh@linuxfoundation.org>,
<seanjc@google.com>, <thomas.lendacky@amd.com>,
<pawan.kumar.gupta@linux.intel.com>, <manali.shukla@amd.com>,
<perry.yuan@amd.com>, <kai.huang@intel.com>,
<peterz@infradead.org>, <xiaoyao.li@intel.com>,
<kan.liang@linux.intel.com>, <mario.limonciello@amd.com>,
<xin3.li@intel.com>, <gautham.shenoy@amd.com>, <xin@zytor.com>,
<chang.seok.bae@intel.com>, <fenghuay@nvidia.com>,
<peternewman@google.com>, <maciej.wieczor-retman@intel.com>,
<eranian@google.com>, <linux-doc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v14 25/32] fs/resctrl: Provide interface to update the event configurations
Date: Wed, 25 Jun 2025 16:21:57 -0700 [thread overview]
Message-ID: <de1e1946-15d2-401e-a974-cbc86d08a78c@intel.com> (raw)
In-Reply-To: <dc097e5caa1c7df42c211fffb67f8d860a6b39da.1749848715.git.babu.moger@amd.com>
Hi Babu,
On 6/13/25 2:05 PM, Babu Moger wrote:
> When assignable counters are supported the users can modify the event
"the users" -> "the user" or "users"?
> configuration by writing to the 'event_filter' interface file. The event
nit: "interface file" -> "resctrl file"
> configurations for mbm_event mode are located in
> /sys/fs/resctrl/info/L3_MON/event_configs/.
>
> Update the assignments of all groups when the event configuration is
(just to help be specific) "all groups" -> "all CTRL_MON and MON resource groups"
> modified.
>
> Example:
> $ mount -t resctrl resctrl /sys/fs/resctrl
>
> $ cd /sys/fs/resctrl/
>
> $ cat info/L3_MON/event_configs/mbm_local_bytes/event_filter
> local_reads,local_non_temporal_writes,local_reads_slow_memory
>
> $ echo "local_reads,local_non_temporal_writes" >
> info/L3_MON/event_configs/mbm_total_bytes/event_filter
>
> $ cat info/L3_MON/event_configs/mbm_total_bytes/event_filter
> local_reads,local_non_temporal_writes
>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
...
> ---
> Documentation/filesystems/resctrl.rst | 12 +++
> fs/resctrl/rdtgroup.c | 120 +++++++++++++++++++++++++-
> 2 files changed, 131 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/filesystems/resctrl.rst b/Documentation/filesystems/resctrl.rst
> index b1db1a53db2a..2cd6107ca452 100644
> --- a/Documentation/filesystems/resctrl.rst
> +++ b/Documentation/filesystems/resctrl.rst
> @@ -342,6 +342,18 @@ with the following files:
> # cat /sys/fs/resctrl/info/L3_MON/event_configs/mbm_local_bytes/event_filter
> local_reads, local_non_temporal_writes, local_reads_slow_memory
>
> + Modify the event configuration by writing to the "event_filter" file within the
> + configuration directory. The read/write event_filter file contains the configuration
(to help be specific)
"within the configuration directory" -> "within the "event_configs" directory"
Note that "event_filter" is not consistently in quotes.
> + of the event that reflects which memory transactions are counted by it.
> +
> + For example::
> +
> + # echo "local_reads, local_non_temporal_writes" >
> + /sys/fs/resctrl/info/L3_MON/counter_configs/mbm_total_bytes/event_filter
counter_configs -> event_configs
> +
> + # cat /sys/fs/resctrl/info/L3_MON/counter_configs/mbm_total_bytes/event_filter
counter_configs -> event_configs
> + local_reads, local_non_temporal_writes
Please let example match what code does wrt spacing.
> +
> "max_threshold_occupancy":
> Read/write file provides the largest value (in
> bytes) at which a previously used LLC_occupancy
> diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
> index e2fa5e10c2dd..fdea608e0796 100644
> --- a/fs/resctrl/rdtgroup.c
> +++ b/fs/resctrl/rdtgroup.c
> @@ -1928,6 +1928,123 @@ static int event_filter_show(struct kernfs_open_file *of, struct seq_file *seq,
> return 0;
> }
>
> +/**
> + * rdtgroup_assign_cntr - Update the counter assignments for the event in
Could this please be renamed to rdtgroup_update_cntr()? Actually, how about
rdtgroup_update_cntr_event() to pair with a rdtgroup_assign_cntr_event()?
After staring at this code it becomes confusing when the term "assign" is used
for both allocating and just updating.
Compare for example: rdtgroup_assign_cntrs() with this function ... the
only difference is "cntr" vs "cntrs" in the name but instead of both functions
doing the same just on single vs multiple counters as the name implies they do
significantly different things. I find this very confusing.
> + * a group.
> + * @r: Resource to which update needs to be done.
> + * @rdtgrp: Resctrl group.
> + * @mevt: MBM monitor event.
> + */
> +static int rdtgroup_assign_cntr(struct rdt_resource *r, struct rdtgroup *rdtgrp,
> + struct mon_evt *mevt)
> +{
> + struct rdt_mon_domain *d;
> + int cntr_id;
> +
> + list_for_each_entry(d, &r->mon_domains, hdr.list) {
> + cntr_id = mbm_cntr_get(r, d, rdtgrp, mevt->evtid);
> + if (cntr_id >= 0 && d->cntr_cfg[cntr_id].evt_cfg != mevt->evt_cfg) {
> + d->cntr_cfg[cntr_id].evt_cfg = mevt->evt_cfg;
I referred to this snippet in earlier comment
https://lore.kernel.org/lkml/887bad33-7f4a-4b6d-95a7-fdfe0451f42b@intel.com/
> + resctrl_arch_config_cntr(r, d, mevt->evtid, rdtgrp->mon.rmid,
> + rdtgrp->closid, cntr_id, true);
> + }
> + }
> +
> + return 0;
Looks like this can be a void function.
> +}
> +
> +/**
> + * resctrl_assign_cntr_allrdtgrp - Update the counter assignments for the event
> + * for all the groups.
> + * @r: Resource to which update needs to be done.
> + * @mevt MBM Monitor event.
> + */
> +static void resctrl_assign_cntr_allrdtgrp(struct rdt_resource *r, struct mon_evt *mevt)
resctrl_assign_cntr_allrdtgrp() -> resctrl_update_cntr_allrdtgrp()/resctrl_update_cntr_event_allrdtgrp()
> +{
> + struct rdtgroup *prgrp, *crgrp;
> +
> + /*
> + * Check all the groups where the event tyoe is assigned and update
I am not sure what is meant with "Check" here. Maybe "Find"?
tyoe -> type?
> + * the assignment
> + */
> + list_for_each_entry(prgrp, &rdt_all_groups, rdtgroup_list) {
> + rdtgroup_assign_cntr(r, prgrp, mevt);
> +
> + list_for_each_entry(crgrp, &prgrp->mon.crdtgrp_list, mon.crdtgrp_list)
> + rdtgroup_assign_cntr(r, crgrp, mevt);
> + }
> +}
> +
> +static int resctrl_process_configs(char *tok, u32 *val)
> +{
> + char *evt_str;
> + u32 temp_val;
> + bool found;
> + int i;
> +
> +next_config:
> + if (!tok || tok[0] == '\0')
> + return 0;
> +
> + /* Start processing the strings for each memory transaction type */
> + evt_str = strim(strsep(&tok, ","));
> + found = false;
> + for (i = 0; i < NUM_MBM_EVT_VALUES; i++) {
> + if (!strcmp(mbm_config_values[i].name, evt_str)) {
> + temp_val = mbm_config_values[i].val;
> + found = true;
> + break;
> + }
> + }
> +
> + if (!found) {
> + rdt_last_cmd_printf("Invalid memory transaction type %s\n", evt_str);
> + return -EINVAL;
> + }
> +
> + *val |= temp_val;
This still returns a partially initialized value on failure. Please only set
provided parameter on success.
> +
> + goto next_config;
> +}
> +
> +static ssize_t event_filter_write(struct kernfs_open_file *of, char *buf,
> + size_t nbytes, loff_t off)
> +{
> + struct rdt_resource *r = resctrl_arch_get_resource(RDT_RESOURCE_L3);
> + struct mon_evt *mevt = rdt_kn_parent_priv(of->kn);
With mon_evt::rid available it should not be necessary to hardcode the resource?
Do any of these new functions need a struct rdt_resource parameter in addition
to struct mon_evt?
> + u32 evt_cfg = 0;
> + int ret = 0;
> +
> + /* Valid input requires a trailing newline */
> + if (nbytes == 0 || buf[nbytes - 1] != '\n')
> + return -EINVAL;
> +
> + buf[nbytes - 1] = '\0';
> +
> + cpus_read_lock();
> + mutex_lock(&rdtgroup_mutex);
> +
> + rdt_last_cmd_clear();
> +
> + if (!resctrl_arch_mbm_cntr_assign_enabled(r)) {
> + rdt_last_cmd_puts("mbm_cntr_assign mode is not enabled\n");
Needs update to new names.
> + ret = -EINVAL;
> + goto out_unlock;
> + }
> +
> + ret = resctrl_process_configs(buf, &evt_cfg);
> + if (!ret && mevt->evt_cfg != evt_cfg) {
> + mevt->evt_cfg = evt_cfg;
> + resctrl_assign_cntr_allrdtgrp(r, mevt);
Could only event_filter_write() be in fs/resctrl/rdtgroup.c with the rest
of the functions introduced here located with rest of monitoring code
in fs/resctrl/monitor.c?
> + }
> +
> +out_unlock:
> + mutex_unlock(&rdtgroup_mutex);
> + cpus_read_unlock();
> +
> + return ret ?: nbytes;
> +}
> +
> /* rdtgroup information files for one cache resource. */
> static struct rftype res_common_files[] = {
> {
> @@ -2054,9 +2171,10 @@ static struct rftype res_common_files[] = {
> },
> {
> .name = "event_filter",
> - .mode = 0444,
> + .mode = 0644,
> .kf_ops = &rdtgroup_kf_single_ops,
> .seq_show = event_filter_show,
> + .write = event_filter_write,
> },
> {
> .name = "mbm_assign_mode",
Reinette
next prev parent reply other threads:[~2025-06-25 23:22 UTC|newest]
Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-13 21:04 [PATCH v14 00/32] fs,x86/resctrl: Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2025-06-13 21:04 ` [PATCH v14 01/32] x86,fs/resctrl: Remove unappropriate references to cacheinfo in the resctrl subsystem Babu Moger
2025-06-13 21:04 ` [PATCH v14 02/32] x86,fs/resctrl: Consolidate monitor event descriptions Babu Moger
2025-06-24 21:28 ` Reinette Chatre
2025-06-25 15:57 ` Moger, Babu
2025-06-25 17:55 ` Luck, Tony
2025-06-25 20:12 ` Luck, Tony
2025-06-25 22:31 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 03/32] x86,fs/resctrl: Replace architecture event enabled checks Babu Moger
2025-06-13 21:04 ` [PATCH v14 04/32] x86/resctrl: Remove 'rdt_mon_features' global variable Babu Moger
2025-06-13 21:04 ` [PATCH v14 05/32] x86,fs/resctrl: Prepare for more monitor events Babu Moger
2025-06-24 21:30 ` Reinette Chatre
2025-06-13 21:04 ` [PATCH v14 06/32] x86/cpufeatures: Add support for Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2025-06-24 21:31 ` Reinette Chatre
2025-06-25 16:28 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 07/32] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2025-06-13 21:04 ` [PATCH v14 08/32] x86,fs/resctrl: Consolidate monitoring related data from rdt_resource Babu Moger
2025-06-24 21:32 ` Reinette Chatre
2025-06-25 16:53 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 09/32] x86/resctrl: Detect Assignable Bandwidth Monitoring feature details Babu Moger
2025-06-24 21:33 ` Reinette Chatre
2025-06-25 17:58 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 10/32] x86/resctrl: Add support to enable/disable AMD ABMC feature Babu Moger
2025-06-24 22:37 ` Reinette Chatre
2025-06-25 19:50 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 11/32] fs/resctrl: Introduce the interface to display monitoring modes Babu Moger
2025-06-24 22:47 ` Reinette Chatre
2025-06-25 20:14 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 12/32] fs/resctrl: Introduce interface to display number of assignable counter IDs Babu Moger
2025-06-24 23:05 ` Reinette Chatre
2025-06-25 20:33 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 13/32] fs/resctrl: Introduce mbm_cntr_cfg to track assignable counters per domain Babu Moger
2025-06-24 23:31 ` Reinette Chatre
2025-06-26 1:31 ` Moger, Babu
2025-06-26 15:05 ` Reinette Chatre
2025-06-26 15:46 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 14/32] fs/resctrl: Introduce interface to display number of free MBM counters Babu Moger
2025-06-24 23:39 ` Reinette Chatre
2025-06-26 14:17 ` Moger, Babu
2025-06-24 23:41 ` Reinette Chatre
2025-06-26 14:19 ` Moger, Babu
2025-06-13 21:04 ` [PATCH v14 15/32] x86/resctrl: Add data structures and definitions for ABMC assignment Babu Moger
2025-06-13 21:05 ` [PATCH v14 16/32] x86,fs/resctrl: Introduce event configuration field in struct mon_evt Babu Moger
2025-06-24 23:51 ` Reinette Chatre
2025-06-26 16:47 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 17/32] x86/resctrl: Implement resctrl_arch_config_cntr() to assign a counter with ABMC Babu Moger
2025-06-25 3:03 ` Reinette Chatre
2025-06-26 17:41 ` Moger, Babu
2025-06-26 18:02 ` Reinette Chatre
2025-06-26 18:35 ` Moger, Babu
2025-06-26 20:24 ` Reinette Chatre
2025-06-13 21:05 ` [PATCH v14 18/32] fs/resctrl: Add the functionality to assign MBM events Babu Moger
2025-06-25 3:32 ` Reinette Chatre
2025-06-26 19:31 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 19/32] fs/resctrl: Add the functionality to unassign " Babu Moger
2025-06-25 3:38 ` Reinette Chatre
2025-06-26 21:12 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 20/32] fs/resctrl: Report 'Unassigned' for MBM events in mbm_event mode Babu Moger
2025-06-25 4:14 ` Reinette Chatre
2025-06-27 1:34 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 21/32] fs/resctrl: Pass entire struct rdtgroup rather than passing individual members Babu Moger
2025-06-25 4:18 ` Reinette Chatre
2025-06-30 13:57 ` Moger, Babu
2025-06-30 15:44 ` Reinette Chatre
2025-06-30 20:58 ` Moger, Babu
2025-06-30 21:59 ` Reinette Chatre
2025-06-30 22:47 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 22/32] x86,fs/resctrl: Add the support for reading ABMC counters Babu Moger
2025-06-13 21:05 ` [PATCH v14 23/32] fs/resctrl: Add definitions for MBM event configuration Babu Moger
2025-06-25 4:32 ` Reinette Chatre
2025-06-30 17:20 ` Moger, Babu
2025-06-30 21:58 ` Reinette Chatre
2025-06-30 22:51 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 24/32] fs/resctrl: Add event configuration directory under info/L3_MON/ Babu Moger
2025-06-25 23:23 ` Reinette Chatre
2025-06-30 19:06 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 25/32] fs/resctrl: Provide interface to update the event configurations Babu Moger
2025-06-25 23:21 ` Reinette Chatre [this message]
2025-07-01 0:43 ` Moger, Babu
2025-07-01 1:33 ` Reinette Chatre
2025-07-01 16:14 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 26/32] fs/resctrl: Introduce mbm_assign_on_mkdir to enable assignments on mkdir Babu Moger
2025-06-25 23:24 ` Reinette Chatre
2025-07-01 16:23 ` Moger, Babu
2025-07-01 16:37 ` Reinette Chatre
2025-06-13 21:05 ` [PATCH v14 27/32] x86,fs/resctrl: Auto assign/unassign counters " Babu Moger
2025-06-25 23:25 ` Reinette Chatre
2025-07-01 19:06 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 28/32] fs/resctrl: Introduce mbm_L3_assignments to list assignments in a group Babu Moger
2025-06-25 23:27 ` Reinette Chatre
2025-07-01 19:48 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 29/32] fs/resctrl: Introduce the interface to modify " Babu Moger
2025-06-25 23:38 ` Reinette Chatre
2025-07-02 2:18 ` Moger, Babu
2025-07-02 2:56 ` Reinette Chatre
2025-06-13 21:05 ` [PATCH v14 30/32] fs/resctrl: Hide the BMEC related files when mbm_event mode is enabled Babu Moger
2025-06-25 23:39 ` Reinette Chatre
2025-07-02 16:42 ` Moger, Babu
2025-07-02 17:21 ` Reinette Chatre
2025-07-02 19:04 ` Moger, Babu
2025-07-03 16:21 ` Reinette Chatre
2025-07-07 22:35 ` Moger, Babu
2025-07-08 13:27 ` Moger, Babu
2025-07-08 15:21 ` Reinette Chatre
2025-07-08 15:43 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 31/32] fs/resctrl: Introduce the interface to switch between monitor modes Babu Moger
2025-06-25 23:40 ` Reinette Chatre
2025-07-02 17:39 ` Moger, Babu
2025-06-13 21:05 ` [PATCH v14 32/32] x86/resctrl: Configure mbm_event mode if supported Babu Moger
2025-06-25 23:40 ` Reinette Chatre
2025-07-02 17:45 ` Moger, Babu
2025-06-13 21:41 ` [PATCH v14 00/32] fs,x86/resctrl: Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Luck, Tony
2025-06-16 14:47 ` Moger, Babu
2025-06-24 21:25 ` Reinette Chatre
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=de1e1946-15d2-401e-a974-cbc86d08a78c@intel.com \
--to=reinette.chatre@intel.com \
--cc=Dave.Martin@arm.com \
--cc=akpm@linux-foundation.org \
--cc=ardb@kernel.org \
--cc=babu.moger@amd.com \
--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=fenghuay@nvidia.com \
--cc=gautham.shenoy@amd.com \
--cc=gregkh@linuxfoundation.org \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=kai.huang@intel.com \
--cc=kan.liang@linux.intel.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=manali.shukla@amd.com \
--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=rostedt@goodmis.org \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=thomas.lendacky@amd.com \
--cc=thuth@redhat.com \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
--cc=xiaoyao.li@intel.com \
--cc=xin3.li@intel.com \
--cc=xin@zytor.com \
/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).