mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
synced 2026-10-28 12:53:14 +01:00
Until now arch_numa was directly translating firmware NUMA information to memblock. Using numa_memblks as an intermediate step has a few advantages: * alignment with more battle tested x86 implementation * availability of NUMA emulation * maintaining node information for not yet populated memory Adjust a few places in numa_memblks to compile with 32-bit phys_addr_t and replace current functionality related to numa_add_memblk() and __node_distance() in arch_numa with the implementation based on numa_memblks and add functions required by numa_emulation. [[email protected]: fix section mismatch] Link: https://lkml.kernel.org/r/[email protected] [[email protected]: PFN_PHYS() translation is unnecessary here] Link: https://lkml.kernel.org/r/[email protected] Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Mike Rapoport (Microsoft) <[email protected]> Tested-by: Zi Yan <[email protected]> # for x86_64 and arm64 Reviewed-by: Jonathan Cameron <[email protected]> Tested-by: Jonathan Cameron <[email protected]> [arm64 + CXL via QEMU] Acked-by: Dan Williams <[email protected]> Acked-by: David Hildenbrand <[email protected]> Cc: Alexander Gordeev <[email protected]> Cc: Andreas Larsson <[email protected]> Cc: Arnd Bergmann <[email protected]> Cc: Borislav Petkov <[email protected]> Cc: Catalin Marinas <[email protected]> Cc: Christophe Leroy <[email protected]> Cc: Dave Hansen <[email protected]> Cc: Davidlohr Bueso <[email protected]> Cc: David S. Miller <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: Heiko Carstens <[email protected]> Cc: Huacai Chen <[email protected]> Cc: Ingo Molnar <[email protected]> Cc: Jiaxun Yang <[email protected]> Cc: John Paul Adrian Glaubitz <[email protected]> Cc: Jonathan Corbet <[email protected]> Cc: Michael Ellerman <[email protected]> Cc: Palmer Dabbelt <[email protected]> Cc: Rafael J. Wysocki <[email protected]> Cc: Rob Herring (Arm) <[email protected]> Cc: Samuel Holland <[email protected]> Cc: Thomas Bogendoerfer <[email protected]> Cc: Thomas Gleixner <[email protected]> Cc: Vasily Gorbik <[email protected]> Cc: Will Deacon <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
57 lines
1.6 KiB
C
57 lines
1.6 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef __ASM_GENERIC_NUMA_H
|
|
#define __ASM_GENERIC_NUMA_H
|
|
|
|
#ifdef CONFIG_NUMA
|
|
|
|
#define NR_NODE_MEMBLKS (MAX_NUMNODES * 2)
|
|
|
|
int __node_distance(int from, int to);
|
|
#define node_distance(a, b) __node_distance(a, b)
|
|
|
|
extern nodemask_t numa_nodes_parsed __initdata;
|
|
|
|
extern bool numa_off;
|
|
|
|
/* Mappings between node number and cpus on that node. */
|
|
extern cpumask_var_t node_to_cpumask_map[MAX_NUMNODES];
|
|
void numa_clear_node(unsigned int cpu);
|
|
|
|
#ifdef CONFIG_DEBUG_PER_CPU_MAPS
|
|
const struct cpumask *cpumask_of_node(int node);
|
|
#else
|
|
/* Returns a pointer to the cpumask of CPUs on Node 'node'. */
|
|
static inline const struct cpumask *cpumask_of_node(int node)
|
|
{
|
|
if (node == NUMA_NO_NODE)
|
|
return cpu_all_mask;
|
|
|
|
return node_to_cpumask_map[node];
|
|
}
|
|
#endif
|
|
|
|
void __init arch_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 early_cpu_to_node(int cpu);
|
|
void numa_store_cpu_info(unsigned int cpu);
|
|
void numa_add_cpu(unsigned int cpu);
|
|
void numa_remove_cpu(unsigned int cpu);
|
|
|
|
#else /* CONFIG_NUMA */
|
|
|
|
static inline void numa_store_cpu_info(unsigned int cpu) { }
|
|
static inline void numa_add_cpu(unsigned int cpu) { }
|
|
static inline void numa_remove_cpu(unsigned int cpu) { }
|
|
static inline void arch_numa_init(void) { }
|
|
static inline void early_map_cpu_to_node(unsigned int cpu, int nid) { }
|
|
static inline int early_cpu_to_node(int cpu) { return 0; }
|
|
|
|
#endif /* CONFIG_NUMA */
|
|
|
|
#ifdef CONFIG_NUMA_EMU
|
|
void debug_cpumask_set_cpu(unsigned int cpu, int node, bool enable);
|
|
#endif
|
|
|
|
#endif /* __ASM_GENERIC_NUMA_H */
|