| 1 | /* SPDX-License-Identifier: GPL-2.0 */ |
| 2 | #ifndef __NUMA_MEMBLKS_H |
| 3 | #define __NUMA_MEMBLKS_H |
| 4 | |
| 5 | #ifdef CONFIG_NUMA_MEMBLKS |
| 6 | #include <linux/types.h> |
| 7 | |
| 8 | #define NR_NODE_MEMBLKS (MAX_NUMNODES * 2) |
| 9 | |
| 10 | void __init numa_set_distance(int from, int to, int distance); |
| 11 | void __init numa_reset_distance(void); |
| 12 | |
| 13 | struct numa_memblk { |
| 14 | u64 start; |
| 15 | u64 end; |
| 16 | int nid; |
| 17 | }; |
| 18 | |
| 19 | struct numa_meminfo { |
| 20 | int nr_blks; |
| 21 | struct numa_memblk blk[NR_NODE_MEMBLKS]; |
| 22 | }; |
| 23 | |
| 24 | int __init numa_add_memblk(int nodeid, u64 start, u64 end); |
| 25 | int __init numa_add_reserved_memblk(int nid, u64 start, u64 end); |
| 26 | void __init numa_remove_memblk_from(int idx, struct numa_meminfo *mi); |
| 27 | |
| 28 | int __init numa_cleanup_meminfo(struct numa_meminfo *mi); |
| 29 | |
| 30 | int __init numa_memblks_init(int (*init_func)(void), |
| 31 | bool memblock_force_top_down); |
| 32 | |
| 33 | extern int numa_distance_cnt; |
| 34 | |
| 35 | #ifdef CONFIG_NUMA_EMU |
| 36 | extern int emu_nid_to_phys[MAX_NUMNODES]; |
| 37 | int numa_emu_cmdline(char *str); |
| 38 | void __init numa_emu_update_cpu_to_node(int *emu_nid_to_phys, |
| 39 | unsigned int nr_emu_nids); |
| 40 | u64 __init numa_emu_dma_end(void); |
| 41 | void __init numa_emulation(struct numa_meminfo *numa_meminfo, |
| 42 | int numa_dist_cnt); |
| 43 | #else |
| 44 | static inline void numa_emulation(struct numa_meminfo *numa_meminfo, |
| 45 | int numa_dist_cnt) |
| 46 | { } |
| 47 | static inline int numa_emu_cmdline(char *str) |
| 48 | { |
| 49 | return -EINVAL; |
| 50 | } |
| 51 | #endif /* CONFIG_NUMA_EMU */ |
| 52 | |
| 53 | #ifdef CONFIG_NUMA_KEEP_MEMINFO |
| 54 | extern int phys_to_target_node(u64 start); |
| 55 | #define phys_to_target_node phys_to_target_node |
| 56 | extern int memory_add_physaddr_to_nid(u64 start); |
| 57 | #define memory_add_physaddr_to_nid memory_add_physaddr_to_nid |
| 58 | #endif /* CONFIG_NUMA_KEEP_MEMINFO */ |
| 59 | |
| 60 | #endif /* CONFIG_NUMA_MEMBLKS */ |
| 61 | |
| 62 | #endif /* __NUMA_MEMBLKS_H */ |
| 63 | |