From: Babu Moger <babu.moger@amd.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
tony.luck@intel.com, Dave.Martin@arm.com, james.morse@arm.com,
bp@alien8.de, ben.horgan@arm.com
Cc: corbet@lwn.net, skhan@linuxfoundation.org, rdunlap@infradead.org,
tglx@kernel.org, mingo@redhat.com, dave.hansen@linux.intel.com,
hpa@zytor.com, fenghuay@nvidia.com, akpm@linux-foundation.org,
rppt@kernel.org, dapeng1.mi@linux.intel.com, elver@google.com,
jlayton@kernel.org, enelsonmoore@gmail.com, kuba@kernel.org,
ebiggers@kernel.org, seanjc@google.com, peterz@infradead.org,
chao.gao@intel.com, jmattson@google.com, naveen@kernel.org,
ricardo.neri-calderon@linux.intel.com, tiala@microsoft.com,
chang.seok.bae@intel.com, prathyushi.nangia@amd.com,
kim.phillips@amd.com, elena.reshetova@intel.com,
darwi@linutronix.de, linux-doc@vger.kernel.org,
linux-kernel@vger.kernel.org, x86@kernel.org
Subject: Re: [PATCH v5 05/16] x86,fs/resctrl: Introduce architecture hooks to program kernel mode
Date: Wed, 16 Sep 2026 15:57:22 -0500 [thread overview]
Message-ID: <a223c0c7-fa05-4625-af2b-369046913e6b@amd.com> (raw)
In-Reply-To: <543008be-688e-424d-a7bb-398bf98b3613@intel.com>
Hi Reinette,
On 9/16/26 00:26, Reinette Chatre wrote:
> Hi Babu,
>
> On 8/26/26 12:32 PM, Babu Moger wrote:
>> Kernel modes defined by enum resctrl_kernel_mode must be applied on
>> the CPUs when user space activates, deactivates, or updates a
>> configuration.
>
> Not necessarily. This is just what PLZA/RESCTRL_ASSIGN_GLOBAL_ENABLE_PER_CPU
> requires, no? The "applied on the CPUs" seems specific to the
> RESCTRL_ASSIGN_GLOBAL_ENABLE_PER_CPU mode - hence the name includes
> "enable per CPU". Above text implies that all possible kernel modes
> require this, we know that upcoming ones don't so this could just be
> specific to the only kernel mode that needs it?
That is correct. Will rephrase it.
>
>>
>> Generic resctrl has no architecture hook to apply these modes across
>> a CPU mask when the active mode changes.
>
> I cannot believe this. v3 of this series wrote the changelogs of this
> new feature enabling as bugfixes. I asked you several times in v3 to not do this:
>
> https://lore.kernel.org/lkml/2429a51a-92ad-4810-bee9-44bd6fba3443@intel.com/
> https://lore.kernel.org/lkml/57f6324b-6340-4633-b3a0-b40683a5ec12@intel.com/
> https://lore.kernel.org/lkml/10c18df6-d990-4050-bd79-1ca914eee673@intel.com/
>
> v4 did not follow that style ... but now this style of presenting enabling
> code as bugfix is back in v5! In v2 I already expressed frustration that every
> new series seemingly starts from scratch
>
> https://lore.kernel.org/lkml/57c72d52-e62a-44f6-a08a-891a354058e5@intel.com/
>
> Now a new version seems to forget feedback from just two versions ago :(
My apologies. Thank you for the feedback. I'll address these issues and
aim for a better version in the next revision.
>
>>
>> Add resctrl_arch_configure_kmode() to program kernel mode allocation and
>> monitoring associations on @cpu_mask. Accept separate assign_ctrl and
>> assign_mon parameters so CLOSID and RMID can be assigned independently.
>
> Below is just a sampling from the last two versions of me asking you to not
> just verbatim describe the code:
>
> https://lore.kernel.org/lkml/db9c0b3e-184c-4100-b59a-91f6e818fd31@intel.com/ V3
> https://lore.kernel.org/lkml/6273f424-9701-4731-9568-10b3eef8b5fd@intel.com/ V3
> https://lore.kernel.org/lkml/57f6324b-6340-4633-b3a0-b40683a5ec12@intel.com/ V3
> https://lore.kernel.org/lkml/0764a430-f64a-4655-a44f-5c2ff15f2ed7@intel.com/ V4
> https://lore.kernel.org/lkml/0764a430-f64a-4655-a44f-5c2ff15f2ed7@intel.com/ V4
> https://lore.kernel.org/lkml/681e0257-80e0-44c3-b826-20e314a3eb0d@intel.com/ V4
>
> Again, please do not just verbatim describe what clearly can be seen from the patch.
> Use the changelog to describe why the code behaves a certain way.
>
> Maybe you need this request to come from Boris instead before you start following
> the guidance? Here are some examples:
>
> https://lore.kernel.org/all/20240702124524.GEZoP2ZKcTcKl1ca1R@fat_crate.local/
> https://lore.kernel.org/lkml/20250911165433.GBaML-yTUZHkywuJIe@fat_crate.local/
>
>>From here on the changelogs all seem to have this strange pattern of:
> "Architecture needs X"
>
> "Architecture is missing X"
>
> "Verbatim description of X implementation"
>
> Apart from the issues mentioned above this interchangeable repetition turns the
> changelogs into a blur. The x86 format for changelogs is described in
> Documentation/process/maintainer-tip.rst. Just follow that. This should not be
> new to you.
>
> Do not expect further comments on any of the changelogs that follow. I consider
> them all unusable.
>
> I clearly demonstrate above that you ignore my feedback. There really seems no
> reason for me to provide any. I'll make a final attempt to provide feedback
> to *just* the patches (as much as I can without being able to use the changelogs) to
> try and help this work make progress.
Again, my apologies. It wasn't intentional. I try to address your
feedback in every revision, but clearly I'm still missing the mark here.
I'll keep working on it and do my best to improve with each version. :(
Thanks for your patience and continued feedback. Please do not hesitate
to call it.
>
>> Implement the x86 hook to program per-CPU PLZA settings. On x86, PLZA
>> programs these associations per CPU, with CLOSID and RMID configured
>> independently.
>>
>> Provide an MPAM stub so the filesystem layer can call the hook on systems
>> without PLZA.
>>
>> Signed-off-by: Babu Moger <babu.moger@amd.com>
>> ---
>
> ...
>
>> ---
>> arch/x86/kernel/cpu/resctrl/ctrlmondata.c | 38 +++++++++++++++++++++++
>> drivers/resctrl/mpam_resctrl.c | 6 ++++
>
> Needs "arm" in subject prefix.
Sure.
>
>> include/linux/resctrl.h | 33 ++++++++++++++++++++
>> 3 files changed, 77 insertions(+)
>>
>> diff --git a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
>> index e74f1ed54b86..40fd5e31c94e 100644
>> --- a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
>> +++ b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
>> @@ -131,3 +131,41 @@ int resctrl_arch_io_alloc_enable(struct rdt_resource *r, bool enable)
>>
>> return 0;
>> }
>> +
>> +static void resctrl_kmode_set_one_amd(void *arg)
>> +{
>> + union msr_pqr_plza_assoc *plza = arg;
>> +
>> + wrmsrq(MSR_IA32_PQR_PLZA_ASSOC, plza->full);
>> +}
>> +
>> +/*
>> + * Program Privilege Level Zero Association (PLZA) on @cpu_mask.
>> + *
>
> Please follow the custom with function parameters described first, followed by
> description.
Sure.
>
>> + * When @enable is true, kernel mode allocation on @cpu_mask uses @closid from
>> + * MSR_IA32_PQR_PLZA_ASSOC if @assign_ctrl is true, otherwise the CLOSID from
>> + * MSR_IA32_PQR_ASSOC. Kernel mode monitoring uses @rmid from
>> + * MSR_IA32_PQR_PLZA_ASSOC if @assign_mon is true, otherwise the RMID of the
>> + * current task.
>
> This just seems to duplicate the description of union msr_pqr_plza_assoc?
Yes. Some of it. Let me shorten it little bit for the context here.
>
>> + *
>> + * @cpu_mask: CPUs whose PLZA MSR should be updated.
>> + * @closid: CLOSID to use for kernel mode allocation when @assign_ctrl is true.
>
> Contrary to what the comment states the closid parameter is always programmed, whether
> assign_ctrl is true or false. A valid closid is thus expected to always be provided?
Yes. Will change it.
>
>> + * @assign_ctrl: Whether PLZA should provide the kernel mode CLOSID.
>> + * @rmid: RMID to use for kernel mode monitoring when @assign_mon is true.
>
> Same comment.
>
Sure.
>> + * @assign_mon: Whether PLZA should provide the kernel mode RMID.
>> + * @enable: Whether PLZA should provide the kernel mode association.
>> + */
>> +void resctrl_arch_configure_kmode(const struct cpumask *cpu_mask, u32 closid,
>> + bool assign_ctrl, u32 rmid,
>> + bool assign_mon, bool enable)
>> +{
>> + union msr_pqr_plza_assoc plza = { 0 };
>> +
>> + plza.split.rmid = rmid;
>> + plza.split.rmid_en = assign_mon;
>> + plza.split.closid = closid;
>> + plza.split.closid_en = assign_ctrl;
>> + plza.split.plza_en = enable;
>> +
>> + on_each_cpu_mask(cpu_mask, resctrl_kmode_set_one_amd, &plza, 1);
>> +}
>> diff --git a/drivers/resctrl/mpam_resctrl.c b/drivers/resctrl/mpam_resctrl.c
>> index 9d223057953a..286284ac8423 100644
>> --- a/drivers/resctrl/mpam_resctrl.c
>> +++ b/drivers/resctrl/mpam_resctrl.c
>> @@ -139,6 +139,12 @@ bool resctrl_arch_get_io_alloc_enabled(struct rdt_resource *r)
>> return false;
>> }
>>
>> +void resctrl_arch_configure_kmode(const struct cpumask *cpu_mask, u32 closid,
>> + bool assign_ctrl, u32 rmid, bool assign_mon,
>> + bool enable)
>> +{
>> +}
>> +
>> void resctrl_arch_pre_mount(void)
>> {
>> }
>> diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
>> index 4245d1e65ccc..8b30eef835aa 100644
>> --- a/include/linux/resctrl.h
>> +++ b/include/linux/resctrl.h
>> @@ -729,6 +729,39 @@ enum resctrl_kernel_mode {
>>
>> #define RESCTRL_NUM_KERNEL_MODES (RESCTRL_KMODE_LAST + 1)
>>
>> +/**
>> + * resctrl_arch_configure_kmode() - Program kernel mode association
>
> resctrl_arch_configure_kmode() implies a generic kernel mode callback but the
> parameters are specific to the global, per-CPU mode. I expect that either the
> kernel mode self be a parameter or the callback be unique to the kernel mode.
> To simplify the parameter management this could be the latter and renamed
> to something like "resctrl_arch_configure_kmode_global()"/"resctrl_arch_configure_global_kmode()" ?
Yes, Sure. Will change it to "resctrl_arch_configure_kmode_global()".
>
>> + * @cpu_mask: CPUs to assign the kernel mode on.
>> + * @closid: CLOSID that matches the RMID to program kernel mode. Depending
>> + * on the architecture, the counter may match traffic of both
>> + * @closid and @rmid, or @rmid only.
>> + * @assign_ctrl: true to assign @closid for kernel mode; false to inherit
>> + * association from the user-space task.
>> + * @rmid: RMID to program the kernel mode. Some architectures may use
>> + * CLOSID/RMID separately, others will consider them together.
>> + * @assign_mon: true to assign @rmid for kernel mode; false to inherit
>> + * monitoring association from the user-space task.
>> + * @enable: true to enable kernel mode association on CPUs in @cpu_mask;
>> + * false to disable kernel mode.
>> + *
>> + * The function can be called in the following scenarios:
>
> "can be" -> "is"?
ok.>
>> + * - If a per-cpu kernel mode is active when user space switches to a new
>
> per-cpu -> per-CPU
sure.
>
>> + * per-cpu kernel mode then resctrl_arch_configure_kmode() will first be
>
> "a new per-cpu kernel mode" - what does this refer to? There is only one
> per-CPU kernel mode, no? It may help to refer to the kernel modes explicitly by
> their enum value to be clear which modes this callback applies to.
Yes.
"RESCTRL_GLOBAL_ENABLE_PER_CPU kernel mode."
>
>> + * called to de-activate the active kernel mode on all CPUs that the
>> + * kernel mode is active on.
>> + * - When user space switches to a new per-cpu kernel mode then
>> + * resctrl_arch_configure_kmode() is called with cpu_online_mask.
>> + * - When user space adds a CPU to an active per-cpu kernel mode.
>> + * - When user space removes a CPU from an active per-cpu kernel mode.
>
> Above scenarios all have the "per-cpu kernel mode" in description that
> confirms that this callback is dedicated to this single kernel mode and
> not actually a generic "enable kernel mode" callback.
>
> Below does not seem to fall under "scenario" like the above but actually
> represents a contract between fs and arch that can be separated and
> highlighted.
I can add a line about the difference.
>
>> + * - resctrl fs will always provide the same closid, assign_ctrl, rmid,
>> + * and assign_mon parameters when activating a kernel mode, all
>
> "a kernel mode" -> this callback is not generic so it should be specific to
> which modes it applies to.
Will mention the kernel mode name here.
Thanks
Babu
next prev parent reply other threads:[~2026-09-16 20:57 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-08-26 19:32 [PATCH v5 00/16] x86/resctrl: Add kernel-mode (e.g., PLZA) support to the resctrl subsystem Babu Moger
2026-08-26 19:32 ` [PATCH v5 01/16] x86/cpufeatures: Support Privilege Level Zero Association (PLZA) Babu Moger
2026-09-16 5:12 ` Reinette Chatre
2026-09-16 20:45 ` Babu Moger
2026-09-17 15:04 ` Reinette Chatre
2026-09-17 17:08 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 02/16] x86/resctrl: Add PLZA support to command-line options Babu Moger
2026-09-16 5:12 ` Reinette Chatre
2026-09-16 20:45 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 03/16] x86/resctrl: Add PLZA configuration definitions and data structures Babu Moger
2026-09-16 5:16 ` Reinette Chatre
2026-09-16 20:53 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 04/16] fs/resctrl: Introduce kernel mode policy enum Babu Moger
2026-09-16 5:14 ` Reinette Chatre
2026-09-16 20:53 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 05/16] x86,fs/resctrl: Introduce architecture hooks to program kernel mode Babu Moger
2026-09-16 5:26 ` Reinette Chatre
2026-09-16 20:57 ` Babu Moger [this message]
2026-08-26 19:32 ` [PATCH v5 06/16] fs/resctrl: Introduce kernel mode states for resctrl Babu Moger
2026-09-16 5:28 ` Reinette Chatre
2026-09-17 14:05 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 07/16] fs/resctrl: Introduce resctrl_set_kmode_support() to register supported modes Babu Moger
2026-09-16 5:29 ` Reinette Chatre
2026-09-17 14:20 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 08/16] x86/resctrl: Expose assign_global_enable_per_cpu when PLZA is available Babu Moger
2026-08-26 19:32 ` [PATCH v5 09/16] fs/resctrl: Add interface to display supported and active kernel modes Babu Moger
2026-09-16 5:32 ` Reinette Chatre
2026-09-17 15:29 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 10/16] fs/resctrl: Add support for hidden resource group files Babu Moger
2026-09-16 5:33 ` Reinette Chatre
2026-09-17 17:26 ` Babu Moger
2026-09-17 18:31 ` Reinette Chatre
2026-09-17 18:54 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 11/16] fs/resctrl: Introduce kmode_cpus/kmode_cpus_list per rdtgroup Babu Moger
2026-09-16 5:34 ` Reinette Chatre
2026-09-17 18:19 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 12/16] fs/resctrl: Program kernel mode assignments on CPU hotplug Babu Moger
2026-09-16 5:35 ` Reinette Chatre
2026-09-17 18:26 ` Babu Moger
2026-08-26 19:32 ` [PATCH v5 13/16] fs/resctrl: Deactivate the kernel mode association when a group is removed Babu Moger
2026-09-16 5:36 ` Reinette Chatre
2026-09-17 19:25 ` Babu Moger
2026-09-17 19:48 ` Reinette Chatre
2026-08-26 19:32 ` [PATCH v5 14/16] fs/resctrl: Add interface to modify kernel mode via info/kernel_mode Babu Moger
2026-09-16 5:50 ` Reinette Chatre
2026-08-26 19:32 ` [PATCH v5 15/16] fs/resctrl: Allow user space to write kmode_cpus/kmode_cpus_list Babu Moger
2026-08-26 19:32 ` [PATCH v5 16/16] fs/resctrl: Add documentation on kernel_mode with example Babu Moger
2026-09-01 21:14 ` Luck, Tony
2026-09-01 23:28 ` 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=a223c0c7-fa05-4625-af2b-369046913e6b@amd.com \
--to=babu.moger@amd.com \
--cc=Dave.Martin@arm.com \
--cc=akpm@linux-foundation.org \
--cc=ben.horgan@arm.com \
--cc=bp@alien8.de \
--cc=chang.seok.bae@intel.com \
--cc=chao.gao@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=fenghuay@nvidia.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=jlayton@kernel.org \
--cc=jmattson@google.com \
--cc=kim.phillips@amd.com \
--cc=kuba@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=naveen@kernel.org \
--cc=peterz@infradead.org \
--cc=prathyushi.nangia@amd.com \
--cc=rdunlap@infradead.org \
--cc=reinette.chatre@intel.com \
--cc=ricardo.neri-calderon@linux.intel.com \
--cc=rppt@kernel.org \
--cc=seanjc@google.com \
--cc=skhan@linuxfoundation.org \
--cc=tglx@kernel.org \
--cc=tiala@microsoft.com \
--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
all inboxes | Powered by JetHome®