[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH v3 06/22] xen/arm: Map populated CPUs to their respective NUMA nodes


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
  • Date: Fri, 19 Jun 2026 16:49:54 +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=lHp6m7ACt989g4mUr+Mdtue0BtyxlOvoHV2Q/YLtGtc=; b=QeINBDEpD4ld4EgQHRnWRRaowWZedfG1wIHj2py4YJNd1cxvr0ysf3qZTgt4VefMhgKzAU5V37hjKx/t7iO6yohVOyN8h6fmR1IJ0ZnqJX5k5VllXDilmtDUbqj0XaR8nt6F/07nDYzuEY42xuANtlCJd3ZINCbXR4Ucvirpy3On08X4zWBrIYekQdWnir4CD6J3eydp2ZA1C35sWg4kXi2CTGk819MSn/9erW8exaNMvkih6NIkrjPvIYt/bb4q0j7ryc16ZfMQcX5C0KTHBAb6avEQMrkBwcx6MR27z8775rCu8jNZg2fc+sNd0pkPiX8ymYD86JGlWK3k/QExTw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hoddoynRJb9jSI2y7eY2X8YgPtVNPm2jClijp8XlLbY+wW9Y8urVPKZ88IcI257koIbx3gKBwbUI7Do4LLoFtnWAFJsKwZgUfeEhawNyTB2ois2lDS+HBAUB1tNCPb1XTqq0jk7ZrPTGNDSLB35CNWzakjEWwGyItDryueyZRNSHiICJEFGm6Nedb3RDea6GsphgqOD/5z80j4XKZZmsHjohPXWpHCW30/JBDJj0wifYzZ+LUxddb42ThDJfSjtpUKUPZ9WF61huXOeoRhOOA2BIN7D5kucJbL/NGVOZFwo8EUogxwWOYfrsULOGwEuhv0scZR58GbtnTdbSOhRluw==
  • 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: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>, Stefano Stabellini <sstabellini@xxxxxxxxxx>, Julien Grall <julien@xxxxxxx>, Bertrand Marquis <bertrand.marquis@xxxxxxx>, Michal Orzel <michal.orzel@xxxxxxx>, Volodymyr Babchuk <Volodymyr_Babchuk@xxxxxxxx>
  • Delivery-date: Fri, 19 Jun 2026 07:50:38 +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.

Signed-off-by: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
---
 xen/arch/arm/smpboot.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/xen/arch/arm/smpboot.c b/xen/arch/arm/smpboot.c
index d1651fe7dd..23c5a46757 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
+    static nodeid_t __initdata cpu_to_numa[NR_CPUS];
+#endif /* CONFIG_DEVICE_TREE_NUMA */
 
     mpidr = system_cpuinfo.mpidr.bits & MPIDR_HWID_MASK;
 
@@ -244,6 +247,17 @@ 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 +273,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




 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.