1 #ifndef _ASM_X86_NUMA_H 2 #define _ASM_X86_NUMA_H 3 4 #include <linux/nodemask.h> 5 6 #include <asm/topology.h> 7 #include <asm/apicdef.h> 8 9 #ifdef CONFIG_NUMA 10 11 #define NR_NODE_MEMBLKS (MAX_NUMNODES*2) 12 13 /* 14 * Too small node sizes may confuse the VM badly. Usually they 15 * result from BIOS bugs. So dont recognize nodes as standalone 16 * NUMA entities that have less than this amount of RAM listed: 17 */ 18 #define NODE_MIN_SIZE (4*1024*1024) 19 20 extern int numa_off; 21 22 /* 23 * __apicid_to_node[] stores the raw mapping between physical apicid and 24 * node and is used to initialize cpu_to_node mapping. 25 * 26 * The mapping may be overridden by apic->numa_cpu_node() on 32bit and thus 27 * should be accessed by the accessors - set_apicid_to_node() and 28 * numa_cpu_node(). 29 */ 30 extern s16 __apicid_to_node[MAX_LOCAL_APIC]; 31 extern nodemask_t numa_nodes_parsed __initdata; 32 33 extern int __init numa_add_memblk(int nodeid, u64 start, u64 end); 34 extern void __init numa_set_distance(int from, int to, int distance); 35 36 static inline void set_apicid_to_node(int apicid, s16 node) 37 { 38 __apicid_to_node[apicid] = node; 39 } 40 41 extern int numa_cpu_node(int cpu); 42 43 #else /* CONFIG_NUMA */ 44 static inline void set_apicid_to_node(int apicid, s16 node) 45 { 46 } 47 48 static inline int numa_cpu_node(int cpu) 49 { 50 return NUMA_NO_NODE; 51 } 52 #endif /* CONFIG_NUMA */ 53 54 #ifdef CONFIG_X86_32 55 # include <asm/numa_32.h> 56 #endif 57 58 #ifdef CONFIG_NUMA 59 extern void numa_set_node(int cpu, int node); 60 extern void numa_clear_node(int cpu); 61 extern void __init init_cpu_to_node(void); 62 extern void numa_add_cpu(int cpu); 63 extern void numa_remove_cpu(int cpu); 64 #else /* CONFIG_NUMA */ 65 static inline void numa_set_node(int cpu, int node) { } 66 static inline void numa_clear_node(int cpu) { } 67 static inline void init_cpu_to_node(void) { } 68 static inline void numa_add_cpu(int cpu) { } 69 static inline void numa_remove_cpu(int cpu) { } 70 #endif /* CONFIG_NUMA */ 71 72 #ifdef CONFIG_DEBUG_PER_CPU_MAPS 73 void debug_cpumask_set_cpu(int cpu, int node, bool enable); 74 #endif 75 76 #ifdef CONFIG_NUMA_EMU 77 #define FAKE_NODE_MIN_SIZE ((u64)32 << 20) 78 #define FAKE_NODE_MIN_HASH_MASK (~(FAKE_NODE_MIN_SIZE - 1UL)) 79 void numa_emu_cmdline(char *); 80 #endif /* CONFIG_NUMA_EMU */ 81 82 #endif /* _ASM_X86_NUMA_H */ 83