| 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 |  | 
|---|