[PATCH 0/7] powerpc/numa: Enable coregroup support for shared LPARs

From: Srikar Dronamraju

Date: Fri Oct 16 2026 - 07:05:11 EST


Coregroup topology is currently disabled for shared LPARs even when
coregroup information is available through the associativity hierarchy.

The associativity hierarchy differs between shared and dedicated LPARs.
For dedicated LPARs, a coregroup level is present when the hierarchy
extends beyond primary_domain_index + 1. For shared LPARs, the hierarchy
has one fewer level and coregroup information is available when it
extends beyond primary_domain_index.

The processor sharing mode is not known when NUMA properties are
initially parsed. It is determined later in pSeries_setup_arch().
CPU associativity therefore initially uses the dedicated-LPAR
interpretation. Once shared processor mode is known, reprocess CPU
associativity to detect the coregroup level using the shared-LPAR
hierarchy.

The series also separates coregroup discovery from NUMA enablement.
CPU associativity is processed even with numa=disabled, while NUMA node,
memory and PCI processing remain disabled.

Patches 1-3 prepare the coregroup detection code by removing redundant
coregroup detection, consolidating the VPHN associativity lookup, and
factoring out the coregroup-level check.

Patches 4-6 allow coregroup discovery with NUMA disabled and restructure
CPU associativity processing so that it can be reused after processor
sharing mode is known.

Patch 7 accounts for the shared-LPAR associativity hierarchy and
reprocesses CPU associativity after shared processor mode has been
identified.

Testing
-------

Tested on:
- Dedicated LPAR
- Shared LPAR
- numa=disabled
- CPU hotplug
- Memory hotplug

On a shared LPAR, /proc/schedstat did not contain an MC domain before
the series:

domain0 SMT 00000000,00000000,00000055 ...
domain1 PKG 000000ff,000000ff,000000ff ...
domain2 NUMA ffffffff,ffffffff,ffffffff ...

After the series, an MC domain is present between SMT and PKG:

domain0 SMT 00000000,00000000,00000055 ...
domain1 MC 00000000,00000000,000000ff ...
domain2 PKG 000000ff,000000ff,000000ff ...
domain3 NUMA ffffffff,ffffffff,ffffffff ...


Srikar Dronamraju (7):
powerpc/numa: Remove redundant coregroup enablement
powerpc/numa: Consolidate VPHN associativity lookup
powerpc/numa: Factor out coregroup availability check
powerpc/numa: Allow coregroup detection when NUMA is disabled
powerpc/numa: Consolidate associativity lookup in parse_numa_properties
powerpc/numa: Extract CPU associativity processing into separate function
powerpc/numa: Enable coregroup support for shared LPARs

arch/powerpc/include/asm/topology.h | 2 +
arch/powerpc/kernel/smp.c | 4 -
arch/powerpc/mm/numa.c | 176 +++++++++++--------------
arch/powerpc/platforms/pseries/setup.c | 6 +
4 files changed, 83 insertions(+), 105 deletions(-)

--
2.47.1