|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [PATCH 02/21] xen/arm: NUMA helper functions via Device Tree helpers
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 982c6c396a..d732918dac 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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |