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 extern int numa_distance_cnt; 11 void __init numa_set_distance(int from, int to, int distance); 12 void __init numa_reset_distance(void); 13 14 struct numa_memblk { 15 u64 start; 16 u64 end; 17 int nid; 18 }; 19 20 struct numa_meminfo { 21 int nr_blks; 22 struct numa_memblk blk[NR_NODE_MEMBLKS]; 23 }; 24 25 extern struct numa_meminfo numa_meminfo __initdata_or_meminfo; 26 extern struct numa_meminfo numa_reserved_meminfo __initdata_or_meminfo; 27 28 int __init numa_add_memblk(int nodeid, u64 start, u64 end); 29 void __init numa_remove_memblk_from(int idx, struct numa_meminfo *mi); 30 31 int __init numa_cleanup_meminfo(struct numa_meminfo *mi); 32 int __init numa_register_meminfo(struct numa_meminfo *mi); 33 34 void __init numa_nodemask_from_meminfo(nodemask_t *nodemask, 35 const struct numa_meminfo *mi); 36 37 #ifdef CONFIG_NUMA_EMU 38 int numa_emu_cmdline(char *str); 39 void __init numa_emu_update_cpu_to_node(int *emu_nid_to_phys, 40 unsigned int nr_emu_nids); 41 u64 __init numa_emu_dma_end(void); 42 void __init numa_emulation(struct numa_meminfo *numa_meminfo, 43 int numa_dist_cnt); 44 #else 45 static inline void numa_emulation(struct numa_meminfo *numa_meminfo, 46 int numa_dist_cnt) 47 { } 48 static inline int numa_emu_cmdline(char *str) 49 { 50 return -EINVAL; 51 } 52 #endif /* CONFIG_NUMA_EMU */ 53 54 #endif /* CONFIG_NUMA_MEMBLKS */ 55 56 #endif /* __NUMA_MEMBLKS_H */ 57