The Linux Kernel Mailing List
 help / color / mirror / Atom feed
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

  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