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

[PATCH v2 01/24] xen/device-tree: Initial framework for Device Tree NUMA support


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
  • Date: Mon, 1 Jun 2026 07:47:31 +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=Wt03HDs8D0xUaaPxP9GLmlyiOrzESbIR6gnC5yHUmes=; b=ZyO/Qd4RgG9dcolUrdzdIlWychMtdEH/4BZCPBOPnHEPCyBKW876x+dOvN3RlJPC17KaGqt387i9kf8PBYrG5pEg4H9lC+E1hW9KTRP5ChnmIRoO8O/EutQftelgBZtIhVvBrctQgbTwSyoaDOC0oqKe1hrmlk41+ibglnhfikYy2m3I06dxc7qu2UBjbob3K3xlIF3khT3NHoYgLNQJM6H/fIa0Y2mdXZYHKPzUb2i0T23VDX2oMPgJ+4JZU/Z1E3Tjoy+rwNEflnEwgX91kvPTeQC+e+/ekXlET+7bkzI8Eoxv11DHfde2YdFF8aCnss6N4RpAvxclH1qv4ss5QQ==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=eQCVtYYVuhSPpNYC88ZGBCI9MtoOZ9N85ROzpSNBfBJLokcwW37lFMscE7AQ25ApUObg0rrl2oZWOv98NO1KVNO7pTc3W28ae3N4gBlQPOmKRZFza6XPXIj/CeS4CHwrxdOx3zH/nKE707DQSc3gdZXgZVI0f5XcgG2UMeauMuw4sSLyTmnBbJbzC+ahRmyrONi2fuqE7Ti0FR+WOpjxd4GruumZSvojKEwZDl1791dX/ZMFTW0UgECDWmM7a9Ora1eVroz3TAWPgCVIh/QPRQdyJHBO7/MbuODK8ARRQk6+JNj+kO85BVu8XRNVx+LO4lUoTCWCSaYXbxJHw+g0DQ==
  • 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>, Andrew Cooper <andrew.cooper3@xxxxxxxxxx>, Anthony PERARD <anthony.perard@xxxxxxxxxx>, Jan Beulich <jbeulich@xxxxxxxx>, Roger Pau Monné <roger.pau@xxxxxxxxxx>
  • Delivery-date: Sun, 31 May 2026 22:48:23 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Introduce the initial framework for Device Tree-based NUMA support
on ARM Xen. This patch adds the required Device Tree-dependent
helper functions needed for NUMA configuration. Note that some
functions currently contain stub implementations.
---
 xen/common/device-tree/Makefile |  1 +
 xen/common/device-tree/numa.c   | 24 ++++++++++++++++++++++++
 xen/include/xen/bootinfo.h      | 14 ++++++++++++++
 xen/include/xen/dt-numa.h       | 29 +++++++++++++++++++++++++++++
 4 files changed, 68 insertions(+)
 create mode 100644 xen/common/device-tree/numa.c
 create mode 100644 xen/include/xen/dt-numa.h

diff --git a/xen/common/device-tree/Makefile b/xen/common/device-tree/Makefile
index 9036e455d6..658aa293c4 100644
--- a/xen/common/device-tree/Makefile
+++ b/xen/common/device-tree/Makefile
@@ -8,6 +8,7 @@ obj-$(CONFIG_DOM0LESS_BOOT) += dom0less-bindings.init.o
 obj-$(CONFIG_OVERLAY_DTB) += dt-overlay.o
 obj-$(CONFIG_HAS_DEVICE_TREE_DISCOVERY) += intc.o
 obj-$(CONFIG_DOMAIN_BUILD_HELPERS) += kernel.o
+obj-$(CONFIG_DEVICE_TREE_NUMA) += numa.o
 obj-$(CONFIG_STATIC_EVTCHN) += static-evtchn.init.o
 obj-$(CONFIG_STATIC_MEMORY) += static-memory.init.o
 obj-$(CONFIG_STATIC_SHM) += static-shmem.init.o
diff --git a/xen/common/device-tree/numa.c b/xen/common/device-tree/numa.c
new file mode 100644
index 0000000000..06f2c8b102
--- /dev/null
+++ b/xen/common/device-tree/numa.c
@@ -0,0 +1,24 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#include <xen/bootinfo.h>
+#include <xen/device_tree.h>
+#include <xen/libfdt/libfdt.h>
+#include <xen/bootfdt.h>
+#include <xen/errno.h>
+#include <xen/init.h>
+#include <xen/nodemask.h>
+#include <xen/numa.h>
+
+#define LOCAL_DISTANCE      10
+#define REMOTE_DISTANCE     20
+
+/*
+ * Get the distance between node 'a' and node 'b'.
+ */
+u8 dt_node_distance(u8 a, u8 b)
+{
+    if ( a != b )
+        return REMOTE_DISTANCE;
+    return LOCAL_DISTANCE;
+}
+
diff --git a/xen/include/xen/bootinfo.h b/xen/include/xen/bootinfo.h
index dbf492c2e3..7923be2b38 100644
--- a/xen/include/xen/bootinfo.h
+++ b/xen/include/xen/bootinfo.h
@@ -6,6 +6,7 @@
 #include <xen/kernel.h>
 #include <xen/macros.h>
 #include <xen/xmalloc.h>
+#include <xen/errno.h>
 
 #define NR_MEM_BANKS 256
 #define NR_SHMEM_BANKS 32
@@ -214,4 +215,17 @@ void fw_unreserved_regions(paddr_t s, paddr_t e,
                            void (*cb)(paddr_t ps, paddr_t pe),
                            unsigned int first);
 
+static inline int bootinfo_get_ram_range(unsigned int idx, paddr_t *start, 
paddr_t *end)
+{
+    struct membanks *mem = bootinfo_get_mem();
+
+    if ( idx >= mem->nr_banks)
+        return -ENOENT;
+
+    *start = mem->bank[idx].start;
+    *end = *start + mem->bank[idx].size;
+
+    return 0;
+}
+
 #endif /* XEN_BOOTINFO_H */
diff --git a/xen/include/xen/dt-numa.h b/xen/include/xen/dt-numa.h
new file mode 100644
index 0000000000..721e8955fa
--- /dev/null
+++ b/xen/include/xen/dt-numa.h
@@ -0,0 +1,29 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+
+#ifndef XEN_DT_NUMA_H
+#define XEN_DT_NUMA_H
+
+#include <xen/types.h>
+#include <xen/device_tree.h>
+
+static inline unsigned int numa_node_to_dt_nid(u32 n)
+{
+    return n;
+}
+
+#ifdef CONFIG_DEVICE_TREE_NUMA
+
+u8 dt_node_distance(u8 a, u8 b);
+
+#endif /* CONFIG_DEVICE_TREE_NUMA */
+
+#endif /* XEN_DT_NUMA_H */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-file-style: "BSD"
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
-- 
2.43.0




 


Rackspace

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