From: Babu Moger <babu.moger@amd.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
corbet@lwn.net, tony.luck@intel.com, Dave.Martin@arm.com,
james.morse@arm.com, tglx@kernel.org, bp@alien8.de,
dave.hansen@linux.intel.com
Cc: skhan@linuxfoundation.org, x86@kernel.org, mingo@redhat.com,
hpa@zytor.com, akpm@linux-foundation.org, rdunlap@infradead.org,
pawan.kumar.gupta@linux.intel.com, feng.tang@linux.alibaba.com,
dapeng1.mi@linux.intel.com, kees@kernel.org, elver@google.com,
lirongqing@baidu.com, paulmck@kernel.org, bhelgaas@google.com,
seanjc@google.com, alexandre.chartre@oracle.com,
yazen.ghannam@amd.com, peterz@infradead.org,
chang.seok.bae@intel.com, kim.phillips@amd.com, xin@zytor.com,
naveen@kernel.org, thomas.lendacky@amd.com,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
eranian@google.com, peternewman@google.com
Subject: Re: [PATCH v3 08/12] fs/resctrl: Make info/kernel_mode writable and identify the bound group
Date: Mon, 22 Jun 2026 14:03:09 -0500 [thread overview]
Message-ID: <5511a8c3-937e-47db-819f-c617fe1897e9@amd.com> (raw)
In-Reply-To: <510ee961-b3a3-41ef-857f-6dc210b6eb83@intel.com>
Hi Reinette,
On 6/22/26 11:47, Reinette Chatre wrote:
> Hi Babu,
>
> On 6/18/26 6:29 PM, Babu Moger wrote:
>> On 6/16/26 18:42, Reinette Chatre wrote:
>>> On 4/30/26 4:24 PM, Babu Moger wrote:
>
> ...
>
>>>> +/**
>>>> + * rdtgroup_config_kmode_clear() - Tear down the kernel-mode binding on @rdtgrp
>>>> + * @rdtgrp: Resctrl group whose kernel-mode binding is being released.
>>>> + * May be %NULL when no group is currently bound, in which case
>>>> + * this is a no-op.
>>>> + * @kmode: Kernel-mode policy currently active on @rdtgrp, as a
>>>> + * BIT(&enum resctrl_kernel_modes) value. When this is
>>>> + * BIT(INHERIT_CTRL_AND_MON) the hardware tear-down is skipped
>>>> + * because no MSR was previously programmed.
>>>> + *
>>>> + * Disables the kernel-mode binding on the CPUs @rdtgrp covers (its
>>>> + * @kmode_cpu_mask, or all online CPUs when that mask is empty) and resets
>>>> + * the per-group bookkeeping (@kmode and @kmode_cpu_mask). This is the
>>>> + * disable counterpart of rdtgroup_config_kmode() and exists so that a write
>>>> + * that transitions the active mode to BIT(INHERIT_CTRL_AND_MON) -- which
>>>> + * skips rdtgroup_config_kmode() entirely -- still tears down the previously
>>>> + * bound group instead of leaving stale enable bits behind.
>>>> + *
>>>> + * On allocation failure the function returns -ENOMEM and leaves both the
>>>> + * hardware state and @rdtgrp's bookkeeping unchanged so the caller can fail
>>>> + * the operation atomically and last_cmd_status reflects reality.
>>>> + *
>>>> + * Context: Caller must hold rdtgroup_mutex.
>>>> + *
>>>> + * Return: 0 on success (including the @rdtgrp == %NULL and INHERIT cases),
>>>> + * -ENOMEM if cpumask allocation fails.
>>>> + */
>>>> +static int rdtgroup_config_kmode_clear(struct rdtgroup *rdtgrp, int kmode)
>>>> +{
>>>> + cpumask_var_t disable_mask;
>>>> + u32 closid, rmid;
>>>> +
>>>> + if (!rdtgrp)
>>>> + return 0;
>>>> +
>>>> + if (kmode == BIT(INHERIT_CTRL_AND_MON))
>>>> + goto out_clear;
>>>> +
>>>> + if (!zalloc_cpumask_var(&disable_mask, GFP_KERNEL))
>>>> + return -ENOMEM;
>>>> +
>>>> + if (rdtgrp->type == RDTMON_GROUP) {
>>>> + closid = rdtgrp->mon.parent->closid;
>>>> + rmid = rdtgrp->mon.rmid;
>>>> + } else {
>>>> + closid = rdtgrp->closid;
>>>> + rmid = rdtgrp->mon.rmid;
>>>> + }
>>>
>>
>> I can directly use it like below. I dont need to check for RDTMON_GROUP.
>>
>> closid = rdtgrp->closid;
>> rmid = rdtgrp->mon.rmid;
>>
>>
>>> Same comment as above ... but actually, why is closid/rmid needed at all? This
>>> function is intended to *reset* the kernel mode so needing a valid/active closid and
>>> rmid does not look right.
>>
>> This is a bit tricky. I may need CLOSID/RMID in
>> resctrl_arch_configure_kmode(). According to the specification, only
>> the PLZA_EN field is allowed to differ across CPUs where PLZA is
>> enabled; all other fields must remain consistent across CPUs within
>> the same domain. If CLOSID/RMID are not passed, it could result in
>> inconsistent values across CPUs.
>
>
> I see. Let's revisit this in next version. It is not quite clear to me how
> the rework of cpu_mask wrangling will impact the resctrl_arch_configure_kmode()
> calls. To simplify this for now resctrl could continue to provide closid and rmid
> to architecture (with the API documentation in include/linux/resctrl.h documenting
> why it is provided and that it may be unused by architecture).
>
Sounds good. Lets revisit this again.
>
>
>>>> +
>>>> + /*
>>>> + * Split "<mode>:group=<spec>"; the ":group=<spec>" suffix is optional
>>>> + * and when omitted the default control group (&rdtgroup_default) is used.
>>>> + */
>>>> + group_str = strstr(buf, ":group=");
>>>> + if (group_str) {
>>>> + *group_str = '\0';
>>>> + group_str += strlen(":group=");
>>>> + }
>>>> + mode_str = buf;
>>>> +
>>>> + mutex_lock(&rdtgroup_mutex);
>>>> + rdt_last_cmd_clear();
>>>> +
>>>> + for (i = 0; i < RESCTRL_NUM_KERNEL_MODES; i++)
>>>> + if (!strcmp(mode_str, resctrl_mode_str[i]))
>>>> + break;
>>>> + if (i == RESCTRL_NUM_KERNEL_MODES) {
>>>> + rdt_last_cmd_puts("Unknown kernel mode\n");
>>>> + ret = -EINVAL;
>>>> + goto out_unlock;
>>>> + }
>>>> +
>>>> + if (!(resctrl_kcfg.kmode & BIT(i))) {
>>>> + rdt_last_cmd_puts("Kernel mode not available\n");
>>>> + ret = -EINVAL;
>>>> + goto out_unlock;
>>>> + }
>>>> +
>>>> + kmode = BIT(i);
>>>
>>> Can kmode be of enum type to be assigned the actual enum value to avoid all these BIT(enum value) usages?
>>
>> You mean?
>>
>> enum resctrl_kernel_modes {
>> INHERIT_CTRL_AND_MON = 1U << 0, /* 1 */
>> GLOBAL_ASSIGN_CTRL_INHERIT_MON = 1U << 1, /* 2 */
>> GLOBAL_ASSIGN_CTRL_ASSIGN_MON = 1U << 2, /* 4 */
>> };
>>
>> #define RESCTRL_NUM_KERNEL_MODES 3
>
> No. I mean:
> enum resctrl_kernel_mode kmode;
> ... with a change like this code like below can be simplified:
>
>>>> + if (kmode == BIT(GLOBAL_ASSIGN_CTRL_ASSIGN_MON_PER_CPU) &&
>
> kmode == GLOBAL_ASSIGN_CTRL_ASSIGN_MON_PER_CPU
Sure. Will do.
Thanks
Babu
next prev parent reply other threads:[~2026-06-22 19:03 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-04-30 23:24 [PATCH v3 00/12] [PATCH v3 00/12] x86/resctrl: Add kernel-mode (e.g., PLZA) support to the resctrl subsystem Babu Moger
2026-04-30 23:24 ` [PATCH v3 01/12] x86/resctrl: Support Privilege-Level Zero Association (PLZA) Babu Moger
2026-06-11 23:23 ` Reinette Chatre
2026-06-12 16:56 ` Moger, Babu
2026-06-12 17:00 ` Moger, Babu
2026-06-17 0:00 ` Reinette Chatre
2026-06-17 16:28 ` Babu Moger
2026-04-30 23:24 ` [PATCH v3 02/12] x86/resctrl: Add data structures and definitions for PLZA configuration Babu Moger
2026-06-11 23:40 ` Reinette Chatre
2026-06-12 15:40 ` Luck, Tony
2026-06-12 17:46 ` Moger, Babu
2026-06-12 17:32 ` Moger, Babu
2026-06-12 17:49 ` Moger, Babu
2026-04-30 23:24 ` [PATCH v3 03/12] fs/resctrl: Add kernel mode (kmode) data structures and arch hook Babu Moger
2026-06-16 23:30 ` Reinette Chatre
2026-06-17 19:36 ` Babu Moger
2026-04-30 23:24 ` [PATCH v3 04/12] x86,fs/resctrl: Program PLZA through kmode arch hooks Babu Moger
2026-05-19 20:59 ` Luck, Tony
2026-05-20 17:49 ` Babu Moger
2026-05-20 22:16 ` Luck, Tony
2026-05-20 23:09 ` Moger, Babu
2026-06-05 10:06 ` Qinyun Tan
2026-06-08 18:17 ` Babu Moger
2026-06-11 11:44 ` Peter Newman
2026-06-11 14:46 ` Babu Moger
2026-06-16 23:33 ` Reinette Chatre
2026-06-17 23:15 ` Moger, Babu
2026-04-30 23:24 ` [PATCH v3 05/12] x86/resctrl: Initialize supported kernel modes for PLZA Babu Moger
2026-06-16 23:35 ` Reinette Chatre
2026-06-18 16:20 ` Babu Moger
2026-04-30 23:24 ` [PATCH v3 06/12] fs/resctrl: Initialize the global kernel-mode policy at subsystem init Babu Moger
2026-06-16 23:36 ` Reinette Chatre
2026-06-18 17:14 ` Babu Moger
2026-06-22 16:21 ` Reinette Chatre
2026-06-22 16:38 ` Babu Moger
2026-04-30 23:24 ` [PATCH v3 07/12] fs/resctrl: Add info/kernel_mode for kernel-mode policy introspection Babu Moger
2026-06-16 23:38 ` Reinette Chatre
2026-06-18 19:16 ` Babu Moger
2026-04-30 23:24 ` [PATCH v3 08/12] fs/resctrl: Make info/kernel_mode writable and identify the bound group Babu Moger
2026-06-16 23:42 ` Reinette Chatre
2026-06-19 1:29 ` Babu Moger
2026-06-22 16:47 ` Reinette Chatre
2026-06-22 19:03 ` Babu Moger [this message]
2026-04-30 23:24 ` [PATCH v3 09/12] fs/resctrl: Reset kernel-mode binding when its rdtgroup goes away Babu Moger
2026-06-16 23:42 ` Reinette Chatre
2026-06-19 20:22 ` Babu Moger
2026-04-30 23:24 ` [PATCH v3 10/12] fs/resctrl: Expose kmode_cpus / kmode_cpus_list per rdtgroup Babu Moger
2026-04-30 23:24 ` [PATCH v3 11/12] resctrl: Hide kmode_cpus[_list] on groups not bound to kernel-mode Babu Moger
2026-04-30 23:24 ` [PATCH v3 12/12] fs/resctrl: Allow user space to write kmode_cpus / kmode_cpus_list Babu Moger
2026-06-08 9:23 ` [PATCH v3 00/12] x86/resctrl: Add kernel-mode (e.g., PLZA) support to the resctrl subsystem Qinyun Tan
2026-06-09 14:10 ` Babu Moger
2026-06-10 1:40 ` qinyuntan
2026-06-11 11:17 ` [PATCH 0/4] x86,fs/resctrl: kernel-mode (PLZA) fixes found during review Qinyun Tan
2026-06-11 21:02 ` Babu Moger
2026-06-11 11:17 ` [PATCH 1/4] resctrl: Add kmode arch stubs for ARM MPAM and hide kernel_mode on non-PLZA platforms Qinyun Tan
2026-06-11 11:33 ` [PATCH v2 1/4] resctrl: Add kmode arch stubs for ARM MPAM Qinyun Tan
2026-06-11 11:17 ` [PATCH 2/4] resctrl: Fix PLZA RMID_EN to be mode-based and relax RDTMON_GROUP constraint for assign_mon Qinyun Tan
2026-06-11 11:17 ` [PATCH 3/4] fs/resctrl: make a failed kernel-mode switch a no-op Qinyun Tan
2026-06-11 11:17 ` [PATCH 4/4] fs/resctrl: program PLZA on a CPU that comes online under a binding Qinyun Tan
2026-06-11 21:53 ` [PATCH v3 00/12] [PATCH v3 00/12] x86/resctrl: Add kernel-mode (e.g., PLZA) support to the resctrl subsystem Reinette Chatre
2026-06-12 15:37 ` Moger, Babu
2026-06-17 4:34 ` Reinette Chatre
2026-06-17 15:56 ` Babu Moger
2026-06-17 17:33 ` Reinette Chatre
2026-06-17 19:55 ` Babu Moger
2026-06-26 15:55 ` Luck, Tony
2026-06-29 13:20 ` 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=5511a8c3-937e-47db-819f-c617fe1897e9@amd.com \
--to=babu.moger@amd.com \
--cc=Dave.Martin@arm.com \
--cc=akpm@linux-foundation.org \
--cc=alexandre.chartre@oracle.com \
--cc=bhelgaas@google.com \
--cc=bp@alien8.de \
--cc=chang.seok.bae@intel.com \
--cc=corbet@lwn.net \
--cc=dapeng1.mi@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=elver@google.com \
--cc=eranian@google.com \
--cc=feng.tang@linux.alibaba.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=kees@kernel.org \
--cc=kim.phillips@amd.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lirongqing@baidu.com \
--cc=mingo@redhat.com \
--cc=naveen@kernel.org \
--cc=paulmck@kernel.org \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=peternewman@google.com \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=reinette.chatre@intel.com \
--cc=seanjc@google.com \
--cc=skhan@linuxfoundation.org \
--cc=tglx@kernel.org \
--cc=thomas.lendacky@amd.com \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
--cc=xin@zytor.com \
--cc=yazen.ghannam@amd.com \
/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