[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 05/21] xen/arm: Map populated CPUs to their respective NUMA nodes
- To: xen-devel@xxxxxxxxxxxxxxxxxxxx
- From: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
- Date: Sun, 24 May 2026 09:01:53 +0900
- Arc-authentication-results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=valinux.co.jp; dmarc=pass action=none header.from=valinux.co.jp; dkim=pass header.d=valinux.co.jp; arc=none
- Arc-message-signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=/vwA3Er90o7oXhAI2Lat0t7tLEuFxyB9jiPPQO/KILk=; b=JeCQ0yowGUOFzIsvsAsGyLR6bvNRKLJUHVScV6TUlYopvJoY17pr3OnEyIfNAOrua3wKeNcP+UPT8UCGnGlHBvSvC/RpN8fdwbsuJ80Db2NyrHwkrQjQiQMwzuoKy8wMr63EjHjPujmwHImqPrOXfwek1gKEoF/PmST1QvCFAXq1PuTWabcVi2to/ZCSaJFJpMYRKtTSU7dol6DserQRWwKBDvgGOabtJS0L65SuyXfcx4DkvwfsdAP0NMhW++JjHLrlhjn/CoXJbye3YVQR2eTGQgURXWqbcSJEpVWUMBmhOBl7gakE3/fVKNOJ2XOgMxY/fQUHXIQ1wFYWW10KaA==
- Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=FSyEgfrXgy6nyhxqC5/XSzGGwr3+ZnahNP3UbIy9wyruLE6HgmX1dzlZEsod5iFgkBDeOJz1pQ6uks5/tHqbW0lfQPt/KL87ZveFYYiAIl4fO34PmAVKSwfPzUdila+BD+NrEMIpdWTvfJTdcCImmgVQefoAcL8sYztEvnaiMPKdhxXoOd6HxRrBheOtjXMvJJTSz7IRJ5Nd9f5PeC1ma+Ac1I4wGs9Ol6lElr1/6HT9Iz6pAow/VuBThHylW/kWF4WXahWLuS1Y54xEkOseGas76WD9efpkExmVq+ZwXsIwEGgJa+bX7CssAHgPOw3x28qpp7u9MntOblAUpuEfDA==
- Authentication-results: eu.smtp.expurgate.cloud; dkim=pass header.s=selector1 header.d=valinux.co.jp header.i="@valinux.co.jp" header.h="From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck"
- Authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=valinux.co.jp;
- Cc: andrew.cooper3@xxxxxxxxxx, anthony.perard@xxxxxxxxxx, michal.orzel@xxxxxxx, jbeulich@xxxxxxxx, julien@xxxxxxx, roger.pau@xxxxxxxxxx, sstabellini@xxxxxxxxxx, jgross@xxxxxxxx, bertrand.marquis@xxxxxxx, Volodymyr_Babchuk@xxxxxxxx, dfaggioli@xxxxxxxx, gwd@xxxxxxxxxxxxxx, Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
- Delivery-date: Sun, 24 May 2026 00:02:42 +0000
- List-id: Xen developer discussion <xen-devel.lists.xenproject.org>
Map the populated CPUs to their respective NUMA nodes. The NUMA
node ID for each CPU is retrieved from the Device Tree.
---
xen/arch/arm/smpboot.c | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index d1651fe7dd..eafa195504 100644
--- a/xen/arch/arm/smpboot.c
+++ b/xen/arch/arm/smpboot.c
@@ -133,6 +133,9 @@ static void __init dt_smp_init_cpus(void)
};
bool bootcpu_valid = false;
int rc;
+#ifdef CONFIG_DEVICE_TREE_NUMA
+ nodeid_t cpu_to_numa[NR_CPUS];
+#endif /* CONFIG_DEVICE_TREE_NUMA */
mpidr = system_cpuinfo.mpidr.bits & MPIDR_HWID_MASK;
@@ -244,6 +247,16 @@ static void __init dt_smp_init_cpus(void)
}
else
tmp_map[i] = hwid;
+
+#ifdef CONFIG_DEVICE_TREE_NUMA
+ if ( tmp_map[i] != MPIDR_INVALID )
+ {
+ uint32_t nid;
+ if ( numa_disabled() || !dt_property_read_u32(cpu, "numa-node-id",
&nid) )
+ nid = 0U; /* default node */
+ cpu_to_numa[i] = nid >= MAX_NUMNODES ? 0U : nid;
+ }
+#endif /* CONFIG_DEVICE_TREE_NUMA */
}
if ( !bootcpu_valid )
@@ -259,6 +272,10 @@ static void __init dt_smp_init_cpus(void)
continue;
cpumask_set_cpu(i, &cpu_possible_map);
cpu_logical_map(i) = tmp_map[i];
+#ifdef CONFIG_DEVICE_TREE_NUMA
+ numa_set_node(i, cpu_to_numa[i]);
+ numa_add_cpu(i);
+#endif /* CONFIG_DEVICE_TREE_NUMA */
}
}
--
2.43.0
|