Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
[linux-2.6-block.git] / include / linux / numa.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
1da177e4
LT
2#ifndef _LINUX_NUMA_H
3#define _LINUX_NUMA_H
d7a73e3f 4#include <linux/init.h>
5d30f92e 5#include <linux/types.h>
1da177e4 6
c80d79d7
YG
7#ifdef CONFIG_NODES_SHIFT
8#define NODES_SHIFT CONFIG_NODES_SHIFT
9#else
1da177e4
LT
10#define NODES_SHIFT 0
11#endif
12
13#define MAX_NUMNODES (1 << NODES_SHIFT)
14
4e25b257 15#define NUMA_NO_NODE (-1)
8f012db2 16#define NUMA_NO_MEMBLK (-1)
4e25b257 17
1e5d8e1e
DW
18/* optionally keep NUMA memory info available post init */
19#ifdef CONFIG_NUMA_KEEP_MEMINFO
20#define __initdata_or_meminfo
21#else
22#define __initdata_or_meminfo __initdata
23#endif
24
b2ca916c 25#ifdef CONFIG_NUMA
a927bd6b
DW
26#include <asm/sparsemem.h>
27
5d30f92e 28/* Generic implementation available */
b1f099b1 29int numa_nearest_node(int node, unsigned int state);
a927bd6b
DW
30
31#ifndef memory_add_physaddr_to_nid
d7a73e3f 32int memory_add_physaddr_to_nid(u64 start);
a927bd6b 33#endif
d7a73e3f 34
a927bd6b 35#ifndef phys_to_target_node
d7a73e3f 36int phys_to_target_node(u64 start);
a927bd6b 37#endif
d7a73e3f 38
8f012db2
AS
39#ifndef numa_fill_memblks
40static inline int __init numa_fill_memblks(u64 start, u64 end)
41{
42 return NUMA_NO_MEMBLK;
43}
44#endif
d7a73e3f 45
a927bd6b 46#else /* !CONFIG_NUMA */
b1f099b1 47static inline int numa_nearest_node(int node, unsigned int state)
b2ca916c
DW
48{
49 return NUMA_NO_NODE;
50}
b1f099b1 51
a927bd6b
DW
52static inline int memory_add_physaddr_to_nid(u64 start)
53{
54 return 0;
55}
56static inline int phys_to_target_node(u64 start)
57{
58 return 0;
59}
b2ca916c
DW
60#endif
61
b1f099b1
YN
62#define numa_map_to_online_node(node) numa_nearest_node(node, N_ONLINE)
63
50468e43
JS
64#ifdef CONFIG_HAVE_ARCH_NODE_DEV_GROUP
65extern const struct attribute_group arch_node_dev_group;
66#endif
67
1da177e4 68#endif /* _LINUX_NUMA_H */