@@ -231,6 +231,10 @@ config GENERIC_ARCH_NUMA
Enable support for generic NUMA implementation. Currently, RISC-V
and ARM64 use it.
+config ARCH_PLATFORM_NUMA
+ bool
+ depends on GENERIC_ARCH_NUMA
+
config FW_DEVLINK_SYNC_STATE_TIMEOUT
bool "sync_state() behavior defaults to timeout instead of strict"
help
@@ -305,6 +305,13 @@ static int __init arch_acpi_numa_init(void)
}
#endif
+#ifndef CONFIG_ARCH_PLATFORM_NUMA
+int __init arch_platform_numa_init(void)
+{
+ return -EOPNOTSUPP;
+}
+#endif
+
/**
* arch_numa_init() - Initialize NUMA
*
@@ -318,6 +325,8 @@ void __init arch_numa_init(void)
return;
if (acpi_disabled && !numa_init(of_numa_init))
return;
+ if (!numa_init(arch_platform_numa_init))
+ return;
}
numa_init(dummy_numa_init);
@@ -31,6 +31,7 @@ static inline const struct cpumask *cpumask_of_node(int node)
#endif
void __init arch_numa_init(void);
+int __init arch_platform_numa_init(void);
int __init numa_add_memblk(int nodeid, u64 start, u64 end);
void __init early_map_cpu_to_node(unsigned int cpu, int nid);
int __init early_cpu_to_node(int cpu);
For some pre-devicetree systems, NUMA information may come from platform specific way. Provide platform numa init hook to allow platform code kick in as last resort method to supply NUMA configuration, and use ARCH_PLATFORM_NUMA Kconfig symbol to gate that function. Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> --- v2: Use Kconfig symbol instead of weak function (arnd) --- drivers/base/Kconfig | 4 ++++ drivers/base/arch_numa.c | 9 +++++++++ include/asm-generic/numa.h | 1 + 3 files changed, 14 insertions(+)