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 05/18] x86,arm,fs/resctrl: Introduce architecture hook to program global kernel mode
Date: Thu, 15 Oct 2026 18:12:05 -0500 [thread overview]
Message-ID: <7ec256a8-9e03-47c8-9fe4-d080a9069228@amd.com> (raw)
In-Reply-To: <b0a15b3a-06ac-4320-8198-78f8dcc5c74e@intel.com>
Hi Reinette,
On 10/15/2026 9:30 AM, Reinette Chatre wrote:
> Hi Babu,
>
> There is no reference in upstream resctrl but during discussions around
> the "multiple controls" support we settled on a new subject prefix of
> "arm,x86,fs/resctrl" for patches that touch all these parts.
Sure.
>
> On 10/1/26 8:10 AM, Babu Moger wrote:
>> RESCTRL_GLOBAL_ENABLE_PER_CPU mode enables kernel work to use different
>> allocation and monitoring associations than the originating user task.
>>
>> The mode is enabled independently on each CPU, so the filesystem must
>> program hardware when the mode is activated, when CPUs are added or
>> removed, and when it is deactivated. Allocation and monitoring associations
>> can be done independently, so the architecture callback takes separate
>> control and monitoring options.
>
> Going back and forth through this series a couple of times all these
> usages of "allocation and monitoring associations" in different contexts
> become a blur and at this point I do not know what it means at all.
May be removing the text in some places might help. In this patch, the
last line may not required.
>
>>
>> Add resctrl_arch_configure_kmode_global() with an x86 PLZA implementation
>> and an empty MPAM stub for ARM systems that do not support this mode.
>>
>> Signed-off-by: Babu Moger <babu.moger@amd.com>
>> ---
>
> ...
>
>> ---
>> arch/x86/kernel/cpu/resctrl/ctrlmondata.c | 38 +++++++++++++++++++++++
>> drivers/resctrl/mpam_resctrl.c | 7 +++++
>> include/linux/resctrl.h | 37 ++++++++++++++++++++++
>> 3 files changed, 82 insertions(+)
>>
>> diff --git a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
>> index 62044489b052..a343dc0c71c5 100644
>> --- a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
>> +++ b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c
>> @@ -137,3 +137,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);
>> +}
>> +
>> +/*
>> + * resctrl_arch_configure_kmode_global - Program Privilege Level Zero
>> + * Association (PLZA).
>> + * @cpu_mask: CPUs whose PLZA MSR should be updated.
>> + * @closid: CLOSID programmed into MSR_IA32_PQR_PLZA_ASSOC. Always
>> + * written; required even when @assign_ctrl is false.
>> + * @assign_ctrl: Whether PLZA should program the kernel-mode CLOSID.
>
> At this point the series seems to switch terms from the "kernel mode" in
> previous patches to "kernel-mode" here. Could this all be consistently
> "kernel mode"?
Sure.
>
> On a similar note, the series switches between "global kernel mode" (like
> in this subject) and "global per-CPU kernel mode" (like in patch #14
> subject).
Lets say "global per-CPU kernel mode" consistently when referring to
RESCTRL_GLOBAL_ENABLE_PER_CPU.
>
>> + * @rmid: RMID programmed into MSR_IA32_PQR_PLZA_ASSOC. Always
>> + * written; required even when @assign_mon is false.
>> + * @assign_mon: Whether PLZA should program the kernel-mode RMID.
>> + * @enable: Whether PLZA should program the kernel-mode association.
>> + *
>> + * Program PLZA on @cpu_mask for %RESCTRL_GLOBAL_ENABLE_PER_CPU. See
>> + * union msr_pqr_plza_assoc for the hardware field meanings.
>> + */
>> +void resctrl_arch_configure_kmode_global(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 f2c651e9f6ea..0c8594e98526 100644
>> --- a/drivers/resctrl/mpam_resctrl.c
>> +++ b/drivers/resctrl/mpam_resctrl.c
>> @@ -139,6 +139,13 @@ bool resctrl_arch_get_io_alloc_enabled(struct rdt_resource *r)
>> return false;
>> }
>>
>> +void resctrl_arch_configure_kmode_global(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 f6adff7f4e1f..dcb0beb847b6 100644
>> --- a/include/linux/resctrl.h
>> +++ b/include/linux/resctrl.h
>> @@ -752,6 +752,43 @@ enum resctrl_kernel_mode {
>>
>> #define RESCTRL_NUM_KERNEL_MODES (RESCTRL_KMODE_LAST + 1)
>>
>> +/**
>> + * resctrl_arch_configure_kmode_global() - Program RESCTRL_GLOBAL_ENABLE_PER_CPU
>> + *
>> + * @cpu_mask: CPUs whose kernel-mode association should be updated.
>
> This could be made more specific about being online CPUs. For example,
> @cpu_mask: Online CPUs on which to update the association.
Sure.
>
>> + * @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. Always provided; a valid
>> + * CLOSID is required even when @assign_ctrl is false.
>
> Above description seems to be a concatenation of different texts. The "counter" text
> seems to be copied from resctrl_arch_rmid_read() and does not seem relevant here.
> The "CLOSID is required" is copied from the x86 arch helper where it is indeed
> required - but this does not apply to resctrl fs?
Ack.
>
> How about something like:
> @closid: CLOSID of the resource group backing %RESCTRL_GLOBAL_ENABLE_PER_CPU mode.
> Always provided, even when @assign_ctrl is false.
>
Sure.
>
>> + * @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.
>> + * Always provided; a valid RMID is required even when
>> + * @assign_mon is false.
>
> (similar comment as for @closid)
Sure.
>
>> + * @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.
>
> "false to disable kernel mode" does not seem to capture all that is required
> from architecture. When considering resctrl_kmode_switch(), @enable being false
> is only thing resctrl fs does to put CPUs into RESCTRL_INHERIT_USER mode? So when
> @enable is false the architecture should disable %RESCTRL_GLOBAL_ENABLE_PER_CPU
> *and* enable %RESCTRL_INHERIT_USER?
Yes. Will update.
>
>> + *
>> + * This callback programs %RESCTRL_GLOBAL_ENABLE_PER_CPU. It is called in
>> + * the following scenarios:
>> + * - If the mode is active when user space changes the configuration, it is
>> + * first called to deactivate the mode on all CPUs where it is active.
>> + * - When user space activates the mode, it is called with cpu_online_mask.
>> + * - When user space adds a CPU to the active mode.
>> + * - When user space removes a CPU from the active mode.
>
> This attempt at listing all callsites is proving problematic since it is
> already out of date by the end of the series. I would thus suggest to drop
> listing the individual call sites and instead focus on writing a clear
> contract. Consider, for example, something like (but please verify, especially
> for accuracy and correct terms, do not just copy&paste):
):
>
> An association starts when %RESCTRL_GLOBAL_ENABLE_PER_CPU is activated
> and ends when the mode is deactivated or user space changes the backing
> resource group, @assign_ctrl or @assign_mon. Every call for one
> association provides the same @closid, @assign_ctrl, @rmid and
> @assign_mon; only @cpu_mask and @enable differ between calls. Before an
> association ends, it is disabled on every CPU where it is enabled.
>
Looks good with minor change.
The callback programs %RESCTRL_GLOBAL_ENABLE_PER_CPU. An association
starts when %RESCTRL_GLOBAL_ENABLE_PER_CPU is activated and ends when
the mode is deactivated or userspace changes the backing resource group,
@assign_ctrl, or @assign_mon. Each call for a given association uses the
same @closid, @assign_ctrl, @rmid, and @assign_mon; only @cpu_mask and
@enable differ. Before an association ends, it is disabled on every CPU
where it is enabled.
Thanks
Babu
next prev parent reply other threads:[~2026-10-15 23:12 UTC|newest]
Thread overview: 40+ 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 [this message]
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-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-15 14:46 ` Reinette Chatre
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-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-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=7ec256a8-9e03-47c8-9fe4-d080a9069228@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