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

[PATCH v2 02/24] xen/arm: NUMA helper functions via Device Tree helpers


  • To: xen-devel@xxxxxxxxxxxxxxxxxxxx
  • From: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
  • Date: Mon, 1 Jun 2026 07:47:32 +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=+xd9T2blWYyalwo41o8xs7sEzMUIRZ2JS3x1+k5CFPQ=; b=FCQIXdeneIxvujDOn28JQTViSU6h/HfBZsGhQAPbbkACasZEvdUU8/SL3VnKuh7PFGdPBgdUy6RPdhdYm/PyPKw+r6Mh2nD8X32jr50EWCy/1zjru5fOPG5vYygDfiz8s3NFoVAj1AMCib/kMcHZ81waFBojO9uWHLPHuANnli2qQd8YCDnkDpQnQrnUMXRFIDK1P0/vJiemxUNmXNhH41m7FrQ7rQZC1TUosoWl6Eus7PMNiY691Y9pA9m1hIhRFosVu092RdmLkrYLiI4k0oamlACCf+WCz47pJWDHSZlgnz1JJH0HyQT9SaQLK3biyLQy/+/n4EC+WgLLYGPIgw==
  • Arc-seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=dyEmGHMEUk2MVjNbtN7aXApMM4WvF8qE/sSPlldn532zv9LYO8Mz5tR9DsantyqhAb1dy2rApaL0tvF+96gOQdj6OwtdCkO1MpmeC7DHmE8PQKxldlR7LckALp2g0vS4VCKpgYzeNJ+xNifKGYcpHrlcW5Q7TIQ3qnPTQ8SuCVldtcgpxMLESn5IvARi8dfJp9YNXb3DANfaO27eQ5lDNlqzjWZha/hnqApeWD8pRipzeRBduRcVuWH0DXrmoiYLQVYZJCZmwP9o/Ujh3l1FC3A+IY4BvfRKTVQvH5r9dCz23l4MmKf6nCnJiaNAD62p/HPaBK0uNkOJAl5uDNbX1g==
  • 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: Sun, 31 May 2026 22:48:23 +0000
  • List-id: Xen developer discussion <xen-devel.lists.xenproject.org>

Implement the NUMA helper functions for ARM Xen by invoking
the Device Tree-based NUMA helper functions.
---
 xen/arch/arm/Makefile           |  1 +
 xen/arch/arm/include/asm/numa.h | 18 +++++++++++
 xen/arch/arm/numa.c             | 53 +++++++++++++++++++++++++++++++++
 3 files changed, 72 insertions(+)
 create mode 100644 xen/arch/arm/include/asm/numa.h
 create mode 100644 xen/arch/arm/numa.c

diff --git a/xen/arch/arm/Makefile b/xen/arch/arm/Makefile
index 84c4062b30..10d20e3a84 100644
--- a/xen/arch/arm/Makefile
+++ b/xen/arch/arm/Makefile
@@ -51,6 +51,7 @@ obj-y += setup.o
 obj-y += shutdown.o
 obj-y += smp.o
 obj-y += smpboot.o
+obj-$(CONFIG_NUMA) += numa.o
 obj-$(CONFIG_SYSCTL) += sysctl.o
 obj-y += time.o
 obj-y += traps.o
diff --git a/xen/arch/arm/include/asm/numa.h b/xen/arch/arm/include/asm/numa.h
new file mode 100644
index 0000000000..a1fa54f2e7
--- /dev/null
+++ b/xen/arch/arm/include/asm/numa.h
@@ -0,0 +1,18 @@
+#ifndef _ASM_ARM_NUMA_H
+#define _ASM_ARM_NUMA_H 1
+
+#include <xen/cpumask.h>
+#include <xen/vmap.h>
+#include <xen/dt-numa.h>
+
+typedef u8 nodeid_t;
+
+#define ZONE_ALIGN (1UL << (MAX_ORDER+PAGE_SHIFT))
+
+extern bool numa_disabled(void);
+extern unsigned int numa_node_to_arch_nid(nodeid_t n);
+extern u8 __node_distance(nodeid_t a, nodeid_t b);
+
+#define arch_want_default_dmazone() (num_online_nodes() > 1)
+
+#endif /* _ASM_ARM_NUMA_H */
diff --git a/xen/arch/arm/numa.c b/xen/arch/arm/numa.c
new file mode 100644
index 0000000000..080d7892ae
--- /dev/null
+++ b/xen/arch/arm/numa.c
@@ -0,0 +1,53 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/*
+ * Helper functions for ARM NUMA.
+ *
+ * Copyright (c) 2026 VA Linux Systems Japan K.K.
+ * Author: Hirokazu Takahashi <taka@xxxxxxxxxxxxx>
+ */
+
+#include <xen/bootinfo.h>
+#include <xen/init.h>
+#include <xen/numa.h>
+
+#if CONFIG_ACPI_NUMA
+#error "ACPI NUMA isn't supported yet."
+#endif /* CONFIG_ACPI_NUMA */
+
+
+bool arch_numa_disabled(void)
+{
+    return false;
+}
+
+unsigned int numa_node_to_arch_nid(nodeid_t n)
+{
+    return numa_node_to_dt_nid(n);
+}
+
+u8 __node_distance(nodeid_t a, nodeid_t b)
+{
+    return dt_node_distance(a, b);
+}
+
+int __init arch_numa_setup(const char *opt)
+{
+    /* parse "numa=" option */
+    return 0;
+}
+
+int __init arch_get_ram_range(unsigned int idx, paddr_t *start, paddr_t *end)
+{
+    return bootinfo_get_ram_range(idx, start, end);
+}
+
+bool __init arch_numa_unavailable(void)
+{
+    return false;
+}
+
+void __init numa_fw_bad(void)
+{
+    printk(KERN_ERR "%s NUMA info is broken.\n", numa_fw_nid_name);
+}
+
-- 
2.43.0




 


Rackspace

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