From: "Moger, Babu" <bmoger@amd.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
Babu Moger <babu.moger@amd.com>,
tony.luck@intel.com, bp@alien8.de, ben.horgan@arm.com
Cc: corbet@lwn.net, skhan@linuxfoundation.org, rdunlap@infradead.org,
x86@kernel.org, Dave.Martin@arm.com, james.morse@arm.com,
tglx@kernel.org, mingo@redhat.com, dave.hansen@linux.intel.com,
hpa@zytor.com, fenghuay@nvidia.com, kas@kernel.org,
rick.p.edgecombe@intel.com, akpm@linux-foundation.org,
rppt@kernel.org, dapeng1.mi@linux.intel.com, elver@google.com,
enelsonmoore@gmail.com, jlayton@kernel.org, kuba@kernel.org,
ebiggers@kernel.org, seanjc@google.com, ewanhai-oc@zhaoxin.com,
binbin.wu@linux.intel.com, peterz@infradead.org,
ashish.kalra@amd.com, superm1@kernel.org,
chang.seok.bae@intel.com, prathyushi.nangia@amd.com,
kim.phillips@amd.com, ackerleytng@google.com,
elena.reshetova@intel.com, naveen@kernel.org,
darwi@linutronix.de, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-coco@lists.linux.dev,
kvm@vger.kernel.org, eranian@google.com, peternewman@google.com
Subject: Re: [PATCH v6 06/18] fs/resctrl: Introduce kernel mode states for resctrl
Date: Fri, 16 Oct 2026 10:10:10 -0500 [thread overview]
Message-ID: <351da689-6f30-4f56-8f3b-ea62cc501d7e@amd.com> (raw)
In-Reply-To: <b2c67318-b52d-440d-bf40-fde40b47ae07@intel.com>
Hi Reinette,
On 10/15/2026 9:37 AM, Reinette Chatre wrote:
> Hi Babu,
>
> nit: "for resctrl" in subject is redundant.
ok.
>
> On 10/1/26 8:10 AM, Babu Moger wrote:
>> The filesystem tracks supported kernel modes, the active mode, and the
>> control and monitoring association for the assigned group.
>
> Please let the context describe the context at the time of the patch, not how
> things will work after entire series is applied.
>
> Please use consistent terminology, this series switches between "assigned group"
> and "backing group" to refer to the same group.
Will use the "backing group". That seems more clearer.
>
> Please use the changelog to guide the reader to understand the architecture
> and how things fit together. Many changelogs are very cryptic without explanation
> of what the patch does and why.
>
Ack.
>>
>> Introduce struct resctrl_kmode_cfg and initialize the default configuration
>> from the platform's capabilities.
>
> Please check all changelogs to ensure they all are able to provide an
> answer to "why". More specifically, please consider:
> https://lore.kernel.org/lkml/20250911165433.GBaML-yTUZHkywuJIe@fat_crate.local/
>
Ack
>>
>> Signed-off-by: Babu Moger <babu.moger@amd.com>
>> ---
> ...
>
>> ---
>> fs/resctrl/internal.h | 29 +++++++++++++++++++++++++++++
>> fs/resctrl/rdtgroup.c | 25 +++++++++++++++++++++++++
>> 2 files changed, 54 insertions(+)
>>
>> diff --git a/fs/resctrl/internal.h b/fs/resctrl/internal.h
>> index e62a277dee85..98f04a2a762b 100644
>> --- a/fs/resctrl/internal.h
>> +++ b/fs/resctrl/internal.h
>> @@ -314,6 +314,35 @@ struct mbm_state {
>> u32 prev_bw;
>> };
>>
>> +/**
>> + * enum kmode_state - Control or monitoring association
>
> What does "control or monitoring association" mean? This is becoming
> an overloaded term used to mean different things and becoming confusing.
> For comparison, earlier patch introduced *another*
> "control and monitoring association" enum:
>
> enum resctrl_kernel_mode - Kernel mode control and monitoring association
Sure.
>
>> + * @KMODE_INHERIT: Inherit from the user-space task.
>> + * @KMODE_ASSIGN: Use the backing group's CLOSID or RMID.
>> + */
>> +enum kmode_state {
>> + KMODE_INHERIT,
>> + KMODE_ASSIGN
>> +};
>> +
>> +/**
>> + * struct resctrl_kmode_cfg - Kernel mode configuration
>> + * @kmode_sup: Bitmap of supported kernel modes.
>> + * @kmode_cur: Currently selected kernel mode.
>
> Adding this comment during a second pass ... please consider later motivations
> about naming of these fields. This field is introduced as "kmode_cur" but when
> considering the language used in rest of series "active" seems more appropriate.
>
> @kmode_sup could also just be @supported (the "kmode" is redundant).
Sure. Will change kmode_cur to "current".
>
>> + * @ctrl: Control association for %RESCTRL_GLOBAL_ENABLE_PER_CPU.
>> + * Kept while %RESCTRL_INHERIT_USER is selected.
>
> The "Kept while ..." does not seem to match implementation. Looks like
> resctrl_kmode_switch() always resets it to KMODE_ASSIGN?
Yes. Will remove the line.
>
> At this point the reader is left to decipher the architecture via cryptic
> changelogs and inaccurate comments. It is very difficult to parse.
>
>> + * @mon: Monitoring association for %RESCTRL_GLOBAL_ENABLE_PER_CPU.
>> + * Kept while %RESCTRL_INHERIT_USER is selected.
>
> Similar comment about "Kept ..."
Yes. Will remove the text.
>
>> + * @rdtgrp: Resource group backing %RESCTRL_GLOBAL_ENABLE_PER_CPU.
>> + * %NULL while that mode is not selected.
>> + */
>> +struct resctrl_kmode_cfg {
>> + DECLARE_BITMAP(kmode_sup, RESCTRL_NUM_KERNEL_MODES);
>> + enum resctrl_kernel_mode kmode_cur;
>> + enum kmode_state ctrl;
>> + enum kmode_state mon;
>> + struct rdtgroup *rdtgrp;
>> +};
>> +
>> extern struct mutex rdtgroup_mutex;
>>
>> static inline const char *rdt_kn_name(const struct kernfs_node *kn)
>> diff --git a/fs/resctrl/rdtgroup.c b/fs/resctrl/rdtgroup.c
>> index 68be9b903ac6..7c39792be1fa 100644
>> --- a/fs/resctrl/rdtgroup.c
>> +++ b/fs/resctrl/rdtgroup.c
>> @@ -76,6 +76,9 @@ static void rdtgroup_destroy_root(void);
>>
>> struct dentry *debugfs_resctrl;
>>
>> +/* Kernel mode for this system. */
>> +static struct resctrl_kmode_cfg resctrl_kmode;
>> +
>> /*
>> * Memory bandwidth monitoring event to use for the default CTRL_MON group
>> * and each new CTRL_MON group created by the user. Only relevant when
>> @@ -2297,6 +2300,26 @@ static void io_alloc_init(void)
>> }
>> }
>>
>> +/*
>> + * Set RESCTRL_INHERIT_USER as the default when the platform supports
>> + * allocation or monitoring. Otherwise leave kernel mode unsupported.
>
> This (and why) would be useful to describe in changelog.
Ack.
>
>> + */
>> +static void resctrl_kmode_init(void)
>> +{
>> + if (!resctrl_arch_alloc_capable() && !resctrl_arch_mon_capable())
>> + return;
>> +
>
> This check seems unnecessary? resctrl_kmode_init() will only be called
> on a system that is capable of allocation or monitoring.
> The planned AET changes will change this behavior see
> https://lore.kernel.org/lkml/20260928221509.68002-16-tony.luck@intel.com/
> but in that case it still seems as though initializing the kernel mode as
> below always needs to be done.
>
> That begs the question why is resctrl_kmode_init() needed at all? Why not use
> a static initializer?
Sure. Will do.
>
> I find resctrl_kmode_init() to be potentially confusing since it does *not*
> actually initialize resctrl_kmode. This is only possible to see two patches
> later where get_rdt_resources() is changed so that x86 sets its supported
> modes and this runs *before* resctrl_kmode_init().
>
> If anyone decides one day "this initialization code is missing a bitmap_zero()"
> then it will break PLZA.
Sounds good. Will remove resctrl_kmode_init() and statically initialize
resctrl_kmode.
Thanks
Babu
next prev parent reply other threads:[~2026-10-16 15:10 UTC|newest]
Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-01 15:10 [PATCH v6 00/18] x86,fs/resctrl: Add kernel-mode (e.g., PLZA) support to the resctrl subsystem Babu Moger
2026-10-01 15:10 ` [PATCH v6 01/18] x86/cpufeatures: Support Privilege Level Zero Association (PLZA) Babu Moger
2026-10-15 14:16 ` Reinette Chatre
2026-10-15 23:02 ` Babu Moger
2026-10-01 15:10 ` [PATCH v6 02/18] x86/resctrl: Add PLZA support to command-line options Babu Moger
2026-10-15 14:17 ` Reinette Chatre
2026-10-15 23:03 ` Babu Moger
2026-10-01 15:10 ` [PATCH v6 03/18] x86/resctrl: Add PLZA configuration definitions and data structures Babu Moger
2026-10-15 14:22 ` Reinette Chatre
2026-10-15 23:07 ` Babu Moger
2026-10-01 15:10 ` [PATCH v6 04/18] fs/resctrl: Introduce kernel mode enum Babu Moger
2026-10-15 14:44 ` Reinette Chatre
2026-10-15 23:09 ` Babu Moger
2026-10-01 15:10 ` [PATCH v6 05/18] x86,arm,fs/resctrl: Introduce architecture hook to program global kernel mode Babu Moger
2026-10-15 14:30 ` Reinette Chatre
2026-10-15 23:12 ` Moger, Babu
2026-10-01 15:10 ` [PATCH v6 06/18] fs/resctrl: Introduce kernel mode states for resctrl Babu Moger
2026-10-15 14:37 ` Reinette Chatre
2026-10-16 15:10 ` Moger, Babu [this message]
2026-10-01 15:10 ` [PATCH v6 07/18] fs/resctrl: Introduce resctrl_set_kmode_support() to register supported modes Babu Moger
2026-10-15 14:40 ` Reinette Chatre
2026-10-16 15:27 ` Moger, Babu
2026-10-01 15:10 ` [PATCH v6 08/18] x86/resctrl: Register RESCTRL_GLOBAL_ENABLE_PER_CPU when PLZA is available Babu Moger
2026-10-15 14:46 ` Reinette Chatre
2026-10-16 15:50 ` Moger, Babu
2026-10-01 15:10 ` [PATCH v6 09/18] fs/resctrl: Add interface to display kernel mode status Babu Moger
2026-10-15 15:16 ` Reinette Chatre
2026-10-16 19:10 ` Moger, Babu
2026-10-01 15:10 ` [PATCH v6 10/18] fs/resctrl: Add support for hidden resource group files Babu Moger
2026-10-15 15:27 ` Reinette Chatre
2026-10-16 20:53 ` Moger, Babu
2026-10-01 15:10 ` [PATCH v6 11/18] fs/resctrl: Introduce kmode_cpus/kmode_cpus_list per rdtgroup Babu Moger
2026-10-15 15:31 ` Reinette Chatre
2026-10-01 15:10 ` [PATCH v6 12/18] fs/resctrl: Add CPU hotplug support for kernel mode associations Babu Moger
2026-10-15 15:33 ` Reinette Chatre
2026-10-01 15:10 ` [PATCH v6 13/18] fs/resctrl: Deactivate kernel mode associations when a group is removed Babu Moger
2026-10-15 15:43 ` Reinette Chatre
2026-10-01 15:10 ` [PATCH v6 14/18] fs/resctrl: Control visibility of global per-CPU kernel mode group files Babu Moger
2026-10-15 15:46 ` Reinette Chatre
2026-10-01 15:10 ` [PATCH v6 15/18] fs/resctrl: Reject mode changes for groups backing kernel mode Babu Moger
2026-10-15 15:49 ` Reinette Chatre
2026-10-01 15:10 ` [PATCH v6 16/18] fs/resctrl: Add interface to modify kernel mode via info/kernel_mode Babu Moger
2026-10-15 16:07 ` Reinette Chatre
2026-10-01 15:10 ` [PATCH v6 17/18] fs/resctrl: Allow user space to write kmode_cpus/kmode_cpus_list Babu Moger
2026-10-01 15:10 ` [PATCH v6 18/18] fs/resctrl: Add kernel mode documentation and examples 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=351da689-6f30-4f56-8f3b-ea62cc501d7e@amd.com \
--to=bmoger@amd.com \
--cc=Dave.Martin@arm.com \
--cc=ackerleytng@google.com \
--cc=akpm@linux-foundation.org \
--cc=ashish.kalra@amd.com \
--cc=babu.moger@amd.com \
--cc=ben.horgan@arm.com \
--cc=binbin.wu@linux.intel.com \
--cc=bp@alien8.de \
--cc=chang.seok.bae@intel.com \
--cc=corbet@lwn.net \
--cc=dapeng1.mi@linux.intel.com \
--cc=darwi@linutronix.de \
--cc=dave.hansen@linux.intel.com \
--cc=ebiggers@kernel.org \
--cc=elena.reshetova@intel.com \
--cc=elver@google.com \
--cc=enelsonmoore@gmail.com \
--cc=eranian@google.com \
--cc=ewanhai-oc@zhaoxin.com \
--cc=fenghuay@nvidia.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=jlayton@kernel.org \
--cc=kas@kernel.org \
--cc=kim.phillips@amd.com \
--cc=kuba@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=naveen@kernel.org \
--cc=peternewman@google.com \
--cc=peterz@infradead.org \
--cc=prathyushi.nangia@amd.com \
--cc=rdunlap@infradead.org \
--cc=reinette.chatre@intel.com \
--cc=rick.p.edgecombe@intel.com \
--cc=rppt@kernel.org \
--cc=seanjc@google.com \
--cc=skhan@linuxfoundation.org \
--cc=superm1@kernel.org \
--cc=tglx@kernel.org \
--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