From: "Chen, Yu C" <yu.c.chen@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: Ben Horgan <ben.horgan@arm.com>,
James Morse <james.morse@arm.com>,
"Dave Martin" <Dave.Martin@arm.com>,
Babu Moger <babu.moger@amd.com>,
Drew Fustini <fustini@kernel.org>,
Fenghua Yu <fenghuay@nvidia.com>, Borislav Petkov <bp@alien8.de>,
Thomas Gleixner <tglx@linutronix.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
Peter Newman <peternewman@google.com>,
"x86@kernel.org" <x86@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Luck, Tony" <tony.luck@intel.com>, <chen.yu@linux.dev>
Subject: Re: [RFC] mpam,x86,fs/resctrl: Generic schema description Proof of Concept
Date: Wed, 8 Jul 2026 20:56:52 +0800 [thread overview]
Message-ID: <68b1b8db-4ffd-4e3b-a097-3bade368ab73@intel.com> (raw)
In-Reply-To: <9b81527e-22e9-4cad-ac32-773f5c9d81e7@intel.com>
Hi Reinette,
On 6/5/2026 5:42 AM, Reinette Chatre wrote:
> Hi Tony,
>
> On 6/3/26 11:46 AM, Luck, Tony wrote:
>> Reinette,
>>
>> Tiny bug in "mpam,x86,fs/resctrl: Transition resource control to a list"
>>
>>> /*
>>> * Return length needed to display longest control suffix.
>>> * Add 1 for the "_" character when control name exists.
>>> */
>>> size_t resctrl_resource_ctrl_max_len(struct rdt_resource *r)
>>> {
>>> struct resctrl_ctrl *ctrl;
>>> size_t total = 0;
>>> size_t len;
>>>
>>> for_each_resource_ctrl(ctrl,r) {
>>> len = strlen(resctrl_ctrl_name_str(ctrl->name));
>>> if (len)
>>> total += 1 + len;
>>
>> Should be:
>>
>> total = max(total, 1 + len);
>
> Thank you very much. I squashed this locally.
>
A minor alignment schemata issue is found when testing region-aware RDT:
[resctrl]# cat schemata
MB:0=100
MB_REGION0_OPT:0=255
MB_REGION0_MIN:0=255
MB_REGION0_MAX:0=255
MB_REGION1_OPT:0=255
MB_REGION1_MIN:0=255
MB_REGION1_MAX:0=255
L2:0=ffff;2=ffff;4=ffff
L3:0=3ff
The schemata file right-justified only the resource name in a
max_name_width field, then printed the control suffix afterwards
without padding. Since max_name_width reserves space for name plus
suffix, this left a run of spaces before every line. A small hacky
fix:
diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c
index 9b51464b66b7..7d517f3457bf 100644
--- a/fs/resctrl/ctrlmondata.c
+++ b/fs/resctrl/ctrlmondata.c
@@ -521,6 +521,7 @@ ssize_t rdtgroup_schemata_write(struct
kernfs_open_file *of,
static void show_doms(struct seq_file *s, struct rdt_resource_final *f,
bool print_ctrl, int closid, struct resctrl_ctrl
*ctrl)
{
+ char name[20];
struct rdt_resource *r = f->res;
struct rdt_ctrl_domain *dom;
bool sep = false;
@@ -529,11 +530,13 @@ static void show_doms(struct seq_file *s, struct
rdt_resource_final *f,
/* Walking r->domains, ensure it can't race with cpuhp */
lockdep_assert_cpus_held();
- if (print_ctrl)
- seq_printf(s, "%*s%s%s:", max_name_width, f->name,
- resctrl_ctrl_is_default(ctrl) ? "" : "_",
- resctrl_ctrl_is_default(ctrl) ?
- "" : resctrl_ctrl_name_str(ctrl->name));
+ if (print_ctrl) {
+ snprintf(name, sizeof(name), "%s%s%s", f->name,
+ resctrl_ctrl_is_default(ctrl) ? "" : "_",
+ resctrl_ctrl_is_default(ctrl) ?
+ "" : resctrl_ctrl_name_str(ctrl->name));
+ seq_printf(s, "%*s:", max_name_width, name);
+ }
list_for_each_entry(dom, &ctrl->domains, hdr.list) {
if (sep)
seq_puts(s, ";");
diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
index c1aac0dcd332..916bf6a8eab4 100644
--- a/fs/resctrl/rdtgroup.c
+++ b/fs/resctrl/rdtgroup.c
@@ -1654,6 +1654,7 @@ static int rdtgroup_size_show(struct
kernfs_open_file *of,
struct rdtgroup *rdtgrp;
struct rdt_resource *r;
unsigned int size;
+ char name[20];
u32 ctrl_val;
int ret = 0;
u32 closid;
@@ -1693,11 +1694,11 @@ static int rdtgroup_size_show(struct
kernfs_open_file *of,
type = f->conf_type;
for_each_resource_ctrl(ctrl, r) {
sep = false;
- seq_printf(s, "%*s", max_name_width, f->name);
- if (!resctrl_ctrl_is_default(ctrl))
- seq_printf(s, "_%s:",
resctrl_ctrl_name_str(ctrl->name));
- else
- seq_putc(s, ':');
+ snprintf(name, sizeof(name), "%s%s%s", f->name,
+ resctrl_ctrl_is_default(ctrl) ? "" : "_",
+ resctrl_ctrl_is_default(ctrl) ?
+ "" : resctrl_ctrl_name_str(ctrl->name));
+ seq_printf(s, "%*s:", max_name_width, name);
list_for_each_entry(d, &ctrl->domains, hdr.list) {
if (sep)
seq_putc(s, ';');
And it becomes:
[ resctrl]# cat schemata
MB:0=100
MB_REGION0_OPT:0=255
MB_REGION0_MIN:0=255
MB_REGION0_MAX:0=255
MB_REGION1_OPT:0=255
MB_REGION1_MIN:0=255
MB_REGION1_MAX:0=255
L2:0=ffff;2=ffff;4=ffff
L3:0=3ff
thanks,
Chenyu
next prev parent reply other threads:[~2026-07-08 12:57 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-05-29 18:06 [RFC] mpam,x86,fs/resctrl: Generic schema description Proof of Concept Reinette Chatre
2026-06-02 20:23 ` Babu Moger
2026-06-02 22:56 ` Reinette Chatre
2026-06-03 1:14 ` Moger, Babu
2026-06-03 3:55 ` Reinette Chatre
2026-06-03 14:40 ` Babu Moger
2026-06-02 23:32 ` Chen, Yu C
2026-06-03 3:45 ` Reinette Chatre
2026-06-03 11:53 ` Chen, Yu C
2026-06-04 16:37 ` Reinette Chatre
2026-06-05 15:43 ` Chen, Yu C
2026-06-05 16:20 ` Reinette Chatre
2026-06-03 15:15 ` Ben Horgan
2026-06-03 19:34 ` Drew Fustini
2026-06-04 11:24 ` Ben Horgan
2026-06-04 17:38 ` Drew Fustini
2026-06-12 1:30 ` Shaopeng Tan (Fujitsu)
2026-06-17 15:29 ` Reinette Chatre
2026-06-19 1:42 ` Shaopeng Tan (Fujitsu)
2026-06-22 16:10 ` Reinette Chatre
2026-06-23 5:04 ` Shaopeng Tan (Fujitsu)
2026-06-04 21:05 ` Reinette Chatre
2026-06-05 19:35 ` Drew Fustini
2026-06-06 5:10 ` Drew Fustini
2026-06-06 5:23 ` Drew Fustini
2026-06-04 17:43 ` Reinette Chatre
2026-06-05 14:53 ` Ben Horgan
2026-06-05 15:39 ` Reinette Chatre
2026-06-05 16:37 ` Ben Horgan
2026-06-08 16:16 ` Reinette Chatre
2026-06-09 10:10 ` Ben Horgan
2026-06-09 15:28 ` Reinette Chatre
2026-06-09 16:37 ` Ben Horgan
2026-06-09 17:41 ` Reinette Chatre
2026-06-10 7:09 ` Chen, Yu C
2026-06-10 14:27 ` Chen, Yu C
2026-06-10 16:13 ` Reinette Chatre
2026-06-10 17:57 ` Chen, Yu C
2026-06-10 18:10 ` Reinette Chatre
2026-06-10 15:59 ` Reinette Chatre
2026-06-10 18:05 ` Chen, Yu C
2026-06-11 3:26 ` Chen, Yu C
2026-06-11 15:45 ` Reinette Chatre
2026-06-26 15:46 ` Chen, Yu C
2026-07-02 14:27 ` Ben Horgan
2026-07-03 9:01 ` Chen, Yu C
2026-06-10 4:31 ` Drew Fustini
2026-06-10 15:14 ` Reinette Chatre
2026-06-03 18:46 ` Luck, Tony
2026-06-04 10:02 ` Ben Horgan
2026-06-04 21:42 ` Reinette Chatre
2026-07-08 12:56 ` Chen, Yu C [this message]
2026-06-03 22:14 ` Drew Fustini
2026-06-04 21:47 ` Reinette Chatre
2026-06-05 19:48 ` Drew Fustini
2026-06-15 21:05 ` Moger, Babu
2026-06-17 17:18 ` Reinette Chatre
2026-06-17 20:29 ` Babu Moger
2026-06-24 19:08 ` Fenghua Yu
2026-06-24 22:22 ` Reinette Chatre
2026-06-25 1:26 ` Fenghua Yu
2026-06-25 15:43 ` Reinette Chatre
2026-07-10 20:59 ` Fenghua Yu
2026-07-02 13:37 ` Ben Horgan
2026-07-02 15:16 ` Fenghua Yu
2026-07-03 13:42 ` 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=68b1b8db-4ffd-4e3b-a097-3bade368ab73@intel.com \
--to=yu.c.chen@intel.com \
--cc=Dave.Martin@arm.com \
--cc=babu.moger@amd.com \
--cc=ben.horgan@arm.com \
--cc=bp@alien8.de \
--cc=chen.yu@linux.dev \
--cc=dave.hansen@linux.intel.com \
--cc=fenghuay@nvidia.com \
--cc=fustini@kernel.org \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=peternewman@google.com \
--cc=reinette.chatre@intel.com \
--cc=tglx@linutronix.de \
--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