Re: [PATCH v2 0/4] powerpc/topology: Introduce llc_override kernel parameter

From: Tim Chen

Date: Fri Oct 23 2026 - 14:04:54 EST


On Fri, 2026-10-23 at 18:46 +0530, Shrikanth Hegde wrote:
> Provide an option for users to enable cache aware scheduling on powerpc
> via a command line parameter.
>
> More details of the problem and context is in cover-letter of v1.
> v1: https://lore.kernel.org/all/20261012102037.2477378-1-sshegde@xxxxxxxxxxxxx/
>
> v1->v2:
> - Move to kernel parameters from debugfs. This helps to keep
> llc_id consistent which doesn't change across sched domain
> rebuilds. (Tim Chen)
> - Update arch_llc_mask to reflect the override (Tim Chen)
> - Limit only to mc, pkg (Srikar Dronamraju)
>
> Notes:
>
> - A selftest for the functional validation of cache aware scheduling
> is a good idea as we discussed in v1. It is a significant change on
> its own and likely takes time. I am thinking it might be good idea to
> revisit selftests for scheduler in general. (We have very few).
> Maybe worth a discussion in coming OSPM.
>
> - I am on parental leave. This version is pretty much what I had last week
> and I haven't gotten any chance to update since. just sending it out.
> Sorry if I have missed to address any comments.
> Please expect delays in my response.

Thanks for sending this while on leave, and congratulations!

The updated approach with boot parameters looks good to me.
Some minor points:

1. llc_bytes. As Chen Yu noted, get_effective_llc_bytes() returns 0
on powerpc because the generic cacheinfo is not populated. With
NUMA balancing on and the default llc_aggr_tolerance, any process
with a footprint then fails exceed_llc_capacity(), so cache aware
scheduling still does not engage.

2. Bisection. Patch 2 moves SD_SHARE_LLC to MC/PKG, but
arch_llc_mask() only follows in patch 3, so a kernel at patch 2
booted with llc_override=mc has sd_llc at MC with per-L2 llc ids,
causing mismatch. It may be better to squash 2 and 3.

3. llc_override is only written at boot. Making it

static int llc_override __ro_after_init;

and then you don't have to worry about READ_ONCE and WRITE_ONCE
to it as Chen Yu pointed out.

Tim

>
> Shrikanth Hegde (4):
> powerpc/topology: Introduce llc_override kernel parameter
> powerpc/topology: Update mc/pkg flags based on llc_override
> powerpc/topology: update arch_llc_mask based llc_override
> Documentation/powerpc: Add details about llc_override
>
> .../admin-guide/kernel-parameters.txt | 15 ++++
> arch/powerpc/include/asm/topology.h | 8 +--
> arch/powerpc/kernel/smp.c | 69 +++++++++++++++++--
> 3 files changed, 81 insertions(+), 11 deletions(-)