All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tony Luck <tony.luck@intel.com>
To: Fenghua Yu <fenghua.yu@intel.com>,
	Reinette Chatre <reinette.chatre@intel.com>,
	Peter Newman <peternewman@google.com>,
	Jonathan Corbet <corbet@lwn.net>,
	x86@kernel.org
Cc: James Morse <james.morse@arm.com>,
	Jamie Iles <quic_jiles@quicinc.com>,
	Babu Moger <babu.moger@amd.com>,
	Randy Dunlap <rdunlap@infradead.org>,
	"Shaopeng Tan (Fujitsu)" <tan.shaopeng@fujitsu.com>,
	linux-kernel@vger.kernel.org, linux-doc@vger.kernel.org,
	patches@lists.linux.dev, Tony Luck <tony.luck@intel.com>
Subject: [PATCH v11 7/8] x86/resctrl: Add write option to "mba_MBps_event" file
Date: Fri,  6 Dec 2024 08:31:47 -0800	[thread overview]
Message-ID: <20241206163148.83828-8-tony.luck@intel.com> (raw)
In-Reply-To: <20241206163148.83828-1-tony.luck@intel.com>

The "mba_MBps" mount option provides an alternate method to control memory
bandwidth. Instead of specifying allowable bandwidth as a percentage of
maximum possible, the user provides a MiB/s limit value.

There is a file in each CTRL_MON group directory that shows the event
currently in use.

Allow writing that file to choose a different event.

A user can choose any of the memory bandwidth monitoring events listed in
/sys/fs/resctrl/info/L3_mon/mon_features independently for each CTRL_MON
group by writing to each of the "mba_MBps_event" files.

Signed-off-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
---
 arch/x86/kernel/cpu/resctrl/internal.h    |  2 ++
 arch/x86/kernel/cpu/resctrl/ctrlmondata.c | 40 +++++++++++++++++++++++
 arch/x86/kernel/cpu/resctrl/rdtgroup.c    |  3 +-
 3 files changed, 44 insertions(+), 1 deletion(-)

diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index ce10a883ecf8..6345ab3e0890 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -609,6 +609,8 @@ ssize_t rdtgroup_schemata_write(struct kernfs_open_file *of,
 				char *buf, size_t nbytes, loff_t off);
 int rdtgroup_schemata_show(struct kernfs_open_file *of,
 			   struct seq_file *s, void *v);
+ssize_t rdtgroup_mba_mbps_event_write(struct kernfs_open_file *of,
+				      char *buf, size_t nbytes, loff_t off);
 int rdtgroup_mba_mbps_event_show(struct kernfs_open_file *of,
 				 struct seq_file *s, void *v);
 bool rdtgroup_cbm_overlaps(struct resctrl_schema *s, struct rdt_ctrl_domain *d,
diff --git a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
index 5fa37b4ecc7a..536351159cc2 100644
--- a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
+++ b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
@@ -518,6 +518,46 @@ static int smp_mon_event_count(void *arg)
 	return 0;
 }
 
+ssize_t rdtgroup_mba_mbps_event_write(struct kernfs_open_file *of,
+				      char *buf, size_t nbytes, loff_t off)
+{
+	struct rdtgroup *rdtgrp;
+	int ret = 0;
+
+	/* Valid input requires a trailing newline */
+	if (nbytes == 0 || buf[nbytes - 1] != '\n')
+		return -EINVAL;
+	buf[nbytes - 1] = '\0';
+
+	rdtgrp = rdtgroup_kn_lock_live(of->kn);
+	if (!rdtgrp) {
+		rdtgroup_kn_unlock(of->kn);
+		return -ENOENT;
+	}
+	rdt_last_cmd_clear();
+
+	if (!strcmp(buf, "mbm_local_bytes")) {
+		if (is_mbm_local_enabled())
+			rdtgrp->mba_mbps_event = QOS_L3_MBM_LOCAL_EVENT_ID;
+		else
+			ret = -EINVAL;
+	} else if (!strcmp(buf, "mbm_total_bytes")) {
+		if (is_mbm_total_enabled())
+			rdtgrp->mba_mbps_event = QOS_L3_MBM_TOTAL_EVENT_ID;
+		else
+			ret = -EINVAL;
+	} else {
+		ret = -EINVAL;
+	}
+
+	if (ret)
+		rdt_last_cmd_printf("Unsupported event id '%s'\n", buf);
+
+	rdtgroup_kn_unlock(of->kn);
+
+	return ret ?: nbytes;
+}
+
 int rdtgroup_mba_mbps_event_show(struct kernfs_open_file *of,
 				 struct seq_file *s, void *v)
 {
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index 6eb930b8bdfd..6419e04d8a7b 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -1952,8 +1952,9 @@ static struct rftype res_common_files[] = {
 	},
 	{
 		.name		= "mba_MBps_event",
-		.mode		= 0444,
+		.mode		= 0644,
 		.kf_ops		= &rdtgroup_kf_single_ops,
+		.write		= rdtgroup_mba_mbps_event_write,
 		.seq_show	= rdtgroup_mba_mbps_event_show,
 	},
 	{
-- 
2.47.0


  parent reply	other threads:[~2024-12-06 16:31 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-12-06 16:31 [PATCH v11 0/8] x86/resctrl: mba_MBps enhancement Tony Luck
2024-12-06 16:31 ` [PATCH v11 1/8] x86/resctrl: Introduce resctrl_file_fflags_init() to initialize fflags Tony Luck
2024-12-13 21:02   ` [tip: x86/cache] " tip-bot2 for Babu Moger
2024-12-06 16:31 ` [PATCH v11 2/8] x86/resctrl: Prepare for per-CTRL_MON group mba_MBps control Tony Luck
2024-12-09 20:45   ` Borislav Petkov
2024-12-09 22:05     ` Luck, Tony
2024-12-09 22:20       ` Borislav Petkov
2024-12-09 22:35         ` Luck, Tony
2024-12-09 23:40           ` Reinette Chatre
2024-12-10  0:00             ` Luck, Tony
2024-12-10 10:13               ` Borislav Petkov
2024-12-10 18:42                 ` Reinette Chatre
2024-12-10 18:59                   ` Borislav Petkov
2024-12-13 21:02   ` [tip: x86/cache] " tip-bot2 for Tony Luck
2024-12-06 16:31 ` [PATCH v11 3/8] x86/resctrl: Modify update_mba_bw() to use per CTRL_MON group event Tony Luck
2024-12-13 21:02   ` [tip: x86/cache] " tip-bot2 for Tony Luck
2024-12-06 16:31 ` [PATCH v11 4/8] x86/resctrl: Compute memory bandwidth for all supported events Tony Luck
2024-12-13 21:02   ` [tip: x86/cache] " tip-bot2 for Tony Luck
2024-12-06 16:31 ` [PATCH v11 5/8] x86/resctrl: Make mba_sc use total bandwidth if local is not supported Tony Luck
2024-12-13 21:02   ` [tip: x86/cache] " tip-bot2 for Tony Luck
2024-12-06 16:31 ` [PATCH v11 6/8] x86/resctrl: Add "mba_MBps_event" file to CTRL_MON directories Tony Luck
2024-12-13 21:02   ` [tip: x86/cache] " tip-bot2 for Tony Luck
2024-12-06 16:31 ` Tony Luck [this message]
2024-12-13 21:02   ` [tip: x86/cache] x86/resctrl: Add write option to "mba_MBps_event" file tip-bot2 for Tony Luck
2024-12-06 16:31 ` [PATCH v11 8/8] x86/resctrl: Document the new " Tony Luck
2024-12-13 21:02   ` [tip: x86/cache] " tip-bot2 for Tony Luck
2024-12-09 17:10 ` [PATCH v11 0/8] x86/resctrl: mba_MBps enhancement Reinette Chatre
2024-12-09 17:28   ` Borislav Petkov
2024-12-09 17:53     ` Luck, Tony
2024-12-09 17:57       ` Borislav Petkov
2024-12-09 19:15         ` Moger, Babu

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=20241206163148.83828-8-tony.luck@intel.com \
    --to=tony.luck@intel.com \
    --cc=babu.moger@amd.com \
    --cc=corbet@lwn.net \
    --cc=fenghua.yu@intel.com \
    --cc=james.morse@arm.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=patches@lists.linux.dev \
    --cc=peternewman@google.com \
    --cc=quic_jiles@quicinc.com \
    --cc=rdunlap@infradead.org \
    --cc=reinette.chatre@intel.com \
    --cc=tan.shaopeng@fujitsu.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.