From: Reinette Chatre <reinette.chatre@intel.com>
To: 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: Thu, 15 Oct 2026 07:37:35 -0700 [thread overview]
Message-ID: <b2c67318-b52d-440d-bf40-fde40b47ae07@intel.com> (raw)
In-Reply-To: <d98872b26051bfad280f72da3bcddea1e978b37c.1790867441.git.babu.moger@amd.com>
Hi Babu,
nit: "for resctrl" in subject is redundant.
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.
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.
>
> 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/
>
> 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
> + * @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).
> + * @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?
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 ..."
> + * @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.
> + */
> +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?
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.
> + resctrl_kmode.kmode_cur = RESCTRL_INHERIT_USER;
> + __set_bit(RESCTRL_INHERIT_USER, resctrl_kmode.kmode_sup);
> +
> + /*
> + * Defaults used when RESCTRL_GLOBAL_ENABLE_PER_CPU mode is
> + * activated without new values.
> + */
> + resctrl_kmode.ctrl = KMODE_ASSIGN;
> + resctrl_kmode.mon = KMODE_ASSIGN;
> +}
> +
> void resctrl_file_fflags_init(const char *config, unsigned long fflags)
> {
> struct rftype *rft;
> @@ -4814,6 +4837,8 @@ int resctrl_init(void)
> if (ret)
> return ret;
>
> + resctrl_kmode_init();
> +
> ret = sysfs_create_mount_point(fs_kobj, "resctrl");
> if (ret) {
> resctrl_l3_mon_resource_exit();
Reinette
next prev parent reply other threads:[~2026-10-15 14:37 UTC|newest]
Thread overview: 25+ 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-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-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-01 15:10 ` [PATCH v6 04/18] fs/resctrl: Introduce kernel mode enum 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-01 15:10 ` [PATCH v6 06/18] fs/resctrl: Introduce kernel mode states for resctrl Babu Moger
2026-10-15 14:37 ` Reinette Chatre [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-01 15:10 ` [PATCH v6 08/18] x86/resctrl: Register RESCTRL_GLOBAL_ENABLE_PER_CPU when PLZA is available Babu Moger
2026-10-01 15:10 ` [PATCH v6 09/18] fs/resctrl: Add interface to display kernel mode status Babu Moger
2026-10-01 15:10 ` [PATCH v6 10/18] fs/resctrl: Add support for hidden resource group files Babu Moger
2026-10-01 15:10 ` [PATCH v6 11/18] fs/resctrl: Introduce kmode_cpus/kmode_cpus_list per rdtgroup Babu Moger
2026-10-01 15:10 ` [PATCH v6 12/18] fs/resctrl: Add CPU hotplug support for kernel mode associations Babu Moger
2026-10-01 15:10 ` [PATCH v6 13/18] fs/resctrl: Deactivate kernel mode associations when a group is removed Babu Moger
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-01 15:10 ` [PATCH v6 15/18] fs/resctrl: Reject mode changes for groups backing kernel mode Babu Moger
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-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=b2c67318-b52d-440d-bf40-fde40b47ae07@intel.com \
--to=reinette.chatre@intel.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=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