From: Ben Horgan <ben.horgan@arm.com>
To: Fenghua Yu <fenghuay@nvidia.com>,
Reinette Chatre <reinette.chatre@intel.com>,
Tony Luck <tony.luck@intel.com>,
James Morse <james.morse@arm.com>,
Dave Martin <Dave.Martin@arm.com>,
Shaopeng Tan <tan.shaopeng@fujitsu.com>,
Chen Yu <yu.c.chen@intel.com>, Babu Moger <babu.moger@amd.com>,
Drew Fustini <fustini@kernel.org>,
Vikram Sethi <vsethi@nvidia.com>,
Shanker Donthineni <sdonthineni@nvidia.com>,
Newton Liu <newtonl@nvidia.com>, Gavin Shan <gshan@redhat.com>
Cc: linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 15/23] arm_mpam: Refine L3 topology and class selection
Date: Fri, 17 Jul 2026 10:18:41 +0100 [thread overview]
Message-ID: <f8a26b9c-7a61-4594-83ce-60b83ab67d71@arm.com> (raw)
In-Reply-To: <20260716210329.2914625-15-fenghuay@nvidia.com>
Hi Fenghua,
On 7/16/26 22:03, Fenghua Yu wrote:
> After enabling memory-level MSCs, the existing class-picking heuristics
> still treat every candidate like an L3 cache MSC. That rejects valid
> memory classes for MBWU counters and applies L3 egress checks to MBA
> classes on CPU-less or system-wide affinities, leaving no monitor or
> control class selected on affected platforms.
>
> Adjust the heuristics
I think we have to live with what we've got. We don't want to change the resctrl monitor events or
schemata files for existing platforms.
so memory classes can back MBWU directly, L3
> topology matching is only required for level-3 MBA candidates, and
> traffic matching is skipped when the class already spans all CPUs.
I think we can keep the existing checks the same and if they match go with what we've got and if
they don't then you can go ahead and use MBWU/MBA at NUMA scope when appropriate.
> Also tolerate components with no online CPUs once at least one
> component has matched.
Ok, new support for unexposed features can be added but if we've already got support for something
in the specific setup then we shouldn't change how it is exposed to the user.
THanks,
Ben
>
> Signed-off-by: Shanker Donthineni <sdonthineni@nvidia.com>
> Signed-off-by: Fenghua Yu <fenghuay@nvidia.com>
> ---
> drivers/resctrl/mpam_resctrl.c | 22 +++++++++++++++++-----
> 1 file changed, 17 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/resctrl/mpam_resctrl.c b/drivers/resctrl/mpam_resctrl.c
> index 953412f11995..86458a56a526 100644
> --- a/drivers/resctrl/mpam_resctrl.c
> +++ b/drivers/resctrl/mpam_resctrl.c
> @@ -854,10 +854,12 @@ static bool topology_matches_l3(struct mpam_class *victim)
> {
> int cpu, err;
> struct mpam_component *victim_iter;
> + bool matched_once = false;
>
> lockdep_assert_cpus_held();
>
> cpumask_var_t __free(free_cpumask_var) tmp_cpumask = CPUMASK_VAR_NULL;
> +
> if (!alloc_cpumask_var(&tmp_cpumask, GFP_KERNEL))
> return false;
>
> @@ -871,8 +873,11 @@ static bool topology_matches_l3(struct mpam_class *victim)
> }
>
> cpu = cpumask_any_and(&victim_iter->affinity, cpu_online_mask);
> - if (WARN_ON_ONCE(cpu >= nr_cpu_ids))
> + if (WARN_ON_ONCE(cpu >= nr_cpu_ids)) {
> + if (matched_once)
> + continue;
> return false;
> + }
>
> cpumask_clear(tmp_cpumask);
> err = find_l3_equivalent_bitmask(cpu, tmp_cpumask);
> @@ -892,6 +897,7 @@ static bool topology_matches_l3(struct mpam_class *victim)
>
> return false;
> }
> + matched_once = true;
> }
>
> return true;
> @@ -1030,13 +1036,15 @@ static void mpam_resctrl_pick_mba(void)
> continue;
> }
>
> - if (!topology_matches_l3(class)) {
> + if (class->level == 3 && !topology_matches_l3(class)) {
> pr_debug("class %u topology doesn't match L3\n",
> class->level);
> continue;
> }
>
> - if (!traffic_matches_l3(class)) {
> + /* Check memory at egress from L3 for MSC with L3 */
> + if (!cpumask_equal(&class->affinity, cpu_possible_mask) &&
> + !traffic_matches_l3(class)) {
> pr_debug("class %u traffic doesn't match L3 egress\n",
> class->level);
> continue;
> @@ -1164,8 +1172,9 @@ static void mpam_resctrl_pick_counters(void)
> }
>
> if (class_has_usable_mbwu(class) &&
> - topology_matches_l3(class) &&
> - traffic_matches_l3(class)) {
> + ((class->type == MPAM_CLASS_MEMORY) ||
> + (topology_matches_l3(class) &&
> + traffic_matches_l3(class)))) {
> pr_debug("class %u has usable MBWU, and matches L3 topology and traffic\n",
> class->level);
>
> @@ -1302,6 +1311,9 @@ static int mpam_resctrl_pick_domain_id(int cpu, struct mpam_component *comp)
> if (class->type == MPAM_CLASS_CACHE)
> return comp->comp_id;
>
> + if (mpam_class_memory(class))
> + return comp->comp_id;
> +
> if (topology_matches_l3(class)) {
> /* Use the corresponding L3 component ID as the domain ID */
> int id = get_cpu_cacheinfo_id(cpu, 3);
next prev parent reply other threads:[~2026-07-17 9:18 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-16 21:02 [PATCH RFC 00/23] resctrl: MBA control emulation and ARM MPAM MB_NODE support Fenghua Yu
2026-07-16 21:02 ` [PATCH 01/23] resctrl: Fix ownership of resource_schemata control subdirectories Fenghua Yu
2026-07-16 21:02 ` [PATCH 02/23] arm_mpam: Fix NULL address access issue Fenghua Yu
2026-07-16 21:02 ` [PATCH 03/23] resctrl: Expose MBA resource_schemata mode sysfs Fenghua Yu
2026-07-17 8:54 ` Ben Horgan
2026-07-17 10:13 ` Ben Horgan
2026-07-16 21:02 ` [PATCH 04/23] resctrl: Expose per-control status in resource_schemata Fenghua Yu
2026-07-16 21:02 ` [PATCH 05/23] resctrl: Add nested resource_schemata support for emulated controls Fenghua Yu
2026-07-16 21:02 ` [PATCH 06/23] resctrl: Mirror schemata for controls without MBW hardware Fenghua Yu
2026-07-16 21:02 ` [PATCH 07/23] resctrl: Rebuild resource_schemata subdirs on MBA mode change Fenghua Yu
2026-07-16 21:02 ` [PATCH 08/23] Documentation: resctrl: document MBA control emulation Fenghua Yu
2026-07-16 21:02 ` [PATCH 09/23] resctrl: De-hardcode L3 monitor infrastructure Fenghua Yu
2026-07-16 21:03 ` [PATCH 10/23] resctrl: Expose MBA MBM counter assignment sysfs Fenghua Yu
2026-07-16 21:03 ` [PATCH 11/23] resctrl: name node-scoped monitor domains mon_NODE_<id> Fenghua Yu
2026-07-16 21:03 ` [PATCH 12/23] resctrl: Add node-scope MBM total event Fenghua Yu
2026-07-16 21:03 ` [PATCH 13/23] resctrl: Make MBM paths resource-aware Fenghua Yu
2026-07-16 21:03 ` [PATCH 14/23] arm_mpam: Support memory-level MSCs and ABMC per class Fenghua Yu
2026-07-16 21:03 ` [PATCH 15/23] arm_mpam: Refine L3 topology and class selection Fenghua Yu
2026-07-17 9:18 ` Ben Horgan [this message]
2026-07-16 21:03 ` [PATCH 16/23] arm_mpam: Include all MSC components during domain setup Fenghua Yu
2026-07-16 21:03 ` [PATCH 17/23] arm_mpam: Handle CPU-less numa nodes Fenghua Yu
2026-07-16 21:03 ` [PATCH 18/23] arm_mpam: Emulate MB control with node-scoped MB_NODE control Fenghua Yu
2026-07-16 21:03 ` [PATCH 19/23] Documentation: arm64: mpam: document memory-level MB control and NUMA nodes Fenghua Yu
2026-07-16 21:03 ` [PATCH 20/23] Documentation: resctrl: document NODE-scoped MBA domains and mon_NODE monitoring Fenghua Yu
2026-07-16 21:03 ` [PATCH 21/23] Documentation: resctrl: document MB_NODE emulation example on ARM MPAM Fenghua Yu
2026-07-16 21:03 ` [PATCH 22/23] arm_mpam: Add KUnit test for CPU-less NUMA node affinity Fenghua Yu
2026-07-16 21:03 ` [PATCH 23/23] selftests/resctrl: Add MB emulation test for ARM MPAM Fenghua Yu
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=f8a26b9c-7a61-4594-83ce-60b83ab67d71@arm.com \
--to=ben.horgan@arm.com \
--cc=Dave.Martin@arm.com \
--cc=babu.moger@amd.com \
--cc=fenghuay@nvidia.com \
--cc=fustini@kernel.org \
--cc=gshan@redhat.com \
--cc=james.morse@arm.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=newtonl@nvidia.com \
--cc=reinette.chatre@intel.com \
--cc=sdonthineni@nvidia.com \
--cc=tan.shaopeng@fujitsu.com \
--cc=tony.luck@intel.com \
--cc=vsethi@nvidia.com \
--cc=yu.c.chen@intel.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