From: Srikar Dronamraju <srikar@linux.ibm.com>
To: linuxppc-dev <linuxppc-dev@lists.ozlabs.org>
Cc: Michael Ellerman <mpe@ellerman.id.au>,
Madhavan Srinivasan <maddy@linux.ibm.com>,
chleroy@kernel.org, Srikar Dronamraju <srikar@linux.ibm.com>,
Nicholas Piggin <npiggin@gmail.com>,
Shrikanth Hegde <sshegde@linux.ibm.com>,
Peter Zijlstra <peterz@infradead.org>,
linux-kernel@vger.kernel.org
Subject: [PATCH 5/7] powerpc/numa: Consolidate associativity lookup in parse_numa_properties
Date: Fri, 16 Oct 2026 16:34:10 +0530 [thread overview]
Message-ID: <20261016110412.1380298-6-srikar@linux.ibm.com> (raw)
In-Reply-To: <20261016110412.1380298-1-srikar@linux.ibm.com>
Refactor the CPU associativity lookup logic to reduce code nesting and
improve readability. Previously, the code had separate paths for VPHN
and device tree lookups with duplicated processing logic.
Consolidate the lookup into a unified flow:
1. Try VPHN associativity if firmware supports it
2. Fall back to device tree associativity if VPHN fails or unavailable
3. Process the associativity information once, regardless of source
No functional change is intended. Both VPHN and device tree paths
continue to work as before, with the common associativity processing
performed in one place.
Signed-off-by: Srikar Dronamraju <srikar@linux.ibm.com>
---
arch/powerpc/mm/numa.c | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c
index ffdb07b995a8..c2aefb60ed5a 100644
--- a/arch/powerpc/mm/numa.c
+++ b/arch/powerpc/mm/numa.c
@@ -920,6 +920,7 @@ static int detect_and_enable_coregroup(const __be32 *associativity, int index)
static int __init parse_numa_properties(void)
{
+ bool vphn = firmware_has_feature(FW_FEATURE_VPHN);
struct device_node *memory, *pci;
int default_nid = 0, index = 0;
const __be32 *associativity;
@@ -951,17 +952,16 @@ static int __init parse_numa_properties(void)
*/
for_each_present_cpu(i) {
__be32 vphn_assoc[VPHN_ASSOC_BUFSIZE];
+ struct device_node *cpu = NULL;
int nid = NUMA_NO_NODE;
- memset(vphn_assoc, 0, VPHN_ASSOC_BUFSIZE * sizeof(__be32));
-
- if (vphn_get_associativity(i, vphn_assoc) == 0) {
- nid = associativity_to_nid(vphn_assoc);
- initialize_form1_numa_distance(vphn_assoc);
- index = detect_and_enable_coregroup(vphn_assoc, index);
- } else {
- struct device_node *cpu;
-
+ associativity = NULL;
+ if (vphn) {
+ memset(vphn_assoc, 0, VPHN_ASSOC_BUFSIZE * sizeof(__be32));
+ if (vphn_get_associativity(i, vphn_assoc) == 0)
+ associativity = vphn_assoc;
+ }
+ if (!associativity) {
/*
* Don't fall back to default_nid yet -- we will plug
* cpus into nodes once the memory scan has discovered
@@ -971,13 +971,14 @@ static int __init parse_numa_properties(void)
BUG_ON(!cpu);
associativity = of_get_associativity(cpu);
- if (associativity) {
- nid = associativity_to_nid(associativity);
- index = detect_and_enable_coregroup(associativity, index);
- initialize_form1_numa_distance(associativity);
- }
- of_node_put(cpu);
}
+ if (associativity) {
+ nid = associativity_to_nid(associativity);
+ initialize_form1_numa_distance(associativity);
+ index = detect_and_enable_coregroup(associativity, index);
+ }
+ if (cpu)
+ of_node_put(cpu);
/* node_set_online() is an UB if 'nid' is negative */
if (likely(nid >= 0) && numa_enabled)
--
2.47.1
next prev parent reply other threads:[~2026-10-16 11:05 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-16 11:04 [PATCH 0/7] powerpc/numa: Enable coregroup support for shared LPARs Srikar Dronamraju
2026-10-16 11:04 ` [PATCH 1/7] powerpc/numa: Remove redundant coregroup enablement Srikar Dronamraju
2026-10-16 11:04 ` [PATCH 2/7] powerpc/numa: Consolidate VPHN associativity lookup Srikar Dronamraju
2026-10-16 11:04 ` [PATCH 3/7] powerpc/numa: Factor out coregroup availability check Srikar Dronamraju
2026-10-16 11:04 ` [PATCH 4/7] powerpc/numa: Allow coregroup detection when NUMA is disabled Srikar Dronamraju
2026-10-16 11:04 ` Srikar Dronamraju [this message]
2026-10-16 11:04 ` [PATCH 6/7] powerpc/numa: Extract CPU associativity processing into separate function Srikar Dronamraju
2026-10-16 11:04 ` [PATCH 7/7] powerpc/numa: Enable coregroup support for shared LPARs Srikar Dronamraju
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=20261016110412.1380298-6-srikar@linux.ibm.com \
--to=srikar@linux.ibm.com \
--cc=chleroy@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=maddy@linux.ibm.com \
--cc=mpe@ellerman.id.au \
--cc=npiggin@gmail.com \
--cc=peterz@infradead.org \
--cc=sshegde@linux.ibm.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
all inboxes | Powered by JetHome®