xref: /linux/include/linux/numa.h (revision 2da68a77)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 #ifndef _LINUX_NUMA_H
3 #define _LINUX_NUMA_H
4 #include <linux/types.h>
5 
6 #ifdef CONFIG_NODES_SHIFT
7 #define NODES_SHIFT     CONFIG_NODES_SHIFT
8 #else
9 #define NODES_SHIFT     0
10 #endif
11 
12 #define MAX_NUMNODES    (1 << NODES_SHIFT)
13 
14 #define	NUMA_NO_NODE	(-1)
15 
16 /* optionally keep NUMA memory info available post init */
17 #ifdef CONFIG_NUMA_KEEP_MEMINFO
18 #define __initdata_or_meminfo
19 #else
20 #define __initdata_or_meminfo __initdata
21 #endif
22 
23 #ifdef CONFIG_NUMA
24 #include <linux/printk.h>
25 #include <asm/sparsemem.h>
26 
27 /* Generic implementation available */
28 int numa_map_to_online_node(int node);
29 
30 #ifndef memory_add_physaddr_to_nid
31 static inline int memory_add_physaddr_to_nid(u64 start)
32 {
33 	pr_info_once("Unknown online node for memory at 0x%llx, assuming node 0\n",
34 			start);
35 	return 0;
36 }
37 #endif
38 #ifndef phys_to_target_node
39 static inline int phys_to_target_node(u64 start)
40 {
41 	pr_info_once("Unknown target node for memory at 0x%llx, assuming node 0\n",
42 			start);
43 	return 0;
44 }
45 #endif
46 #else /* !CONFIG_NUMA */
47 static inline int numa_map_to_online_node(int node)
48 {
49 	return NUMA_NO_NODE;
50 }
51 static inline int memory_add_physaddr_to_nid(u64 start)
52 {
53 	return 0;
54 }
55 static inline int phys_to_target_node(u64 start)
56 {
57 	return 0;
58 }
59 #endif
60 
61 #ifdef CONFIG_HAVE_ARCH_NODE_DEV_GROUP
62 extern const struct attribute_group arch_node_dev_group;
63 #endif
64 
65 #endif /* _LINUX_NUMA_H */
66