diff options
Diffstat (limited to 'include/asm-x86/topology.h')
-rw-r--r-- | include/asm-x86/topology.h | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/include/asm-x86/topology.h b/include/asm-x86/topology.h index 8af05a93f097..81a29eb08ac4 100644 --- a/include/asm-x86/topology.h +++ b/include/asm-x86/topology.h | |||
@@ -32,13 +32,18 @@ | |||
32 | /* Mappings between logical cpu number and node number */ | 32 | /* Mappings between logical cpu number and node number */ |
33 | #ifdef CONFIG_X86_32 | 33 | #ifdef CONFIG_X86_32 |
34 | extern int cpu_to_node_map[]; | 34 | extern int cpu_to_node_map[]; |
35 | |||
36 | #else | 35 | #else |
36 | /* Returns the number of the current Node. */ | ||
37 | #define numa_node_id() (early_cpu_to_node(raw_smp_processor_id())) | ||
38 | #endif | ||
39 | |||
37 | DECLARE_PER_CPU(int, x86_cpu_to_node_map); | 40 | DECLARE_PER_CPU(int, x86_cpu_to_node_map); |
41 | |||
42 | #ifdef CONFIG_SMP | ||
38 | extern int x86_cpu_to_node_map_init[]; | 43 | extern int x86_cpu_to_node_map_init[]; |
39 | extern void *x86_cpu_to_node_map_early_ptr; | 44 | extern void *x86_cpu_to_node_map_early_ptr; |
40 | /* Returns the number of the current Node. */ | 45 | #else |
41 | #define numa_node_id() (early_cpu_to_node(raw_smp_processor_id())) | 46 | #define x86_cpu_to_node_map_early_ptr NULL |
42 | #endif | 47 | #endif |
43 | 48 | ||
44 | extern cpumask_t node_to_cpumask_map[]; | 49 | extern cpumask_t node_to_cpumask_map[]; |
@@ -54,6 +59,8 @@ static inline int cpu_to_node(int cpu) | |||
54 | } | 59 | } |
55 | 60 | ||
56 | #else /* CONFIG_X86_64 */ | 61 | #else /* CONFIG_X86_64 */ |
62 | |||
63 | #ifdef CONFIG_SMP | ||
57 | static inline int early_cpu_to_node(int cpu) | 64 | static inline int early_cpu_to_node(int cpu) |
58 | { | 65 | { |
59 | int *cpu_to_node_map = x86_cpu_to_node_map_early_ptr; | 66 | int *cpu_to_node_map = x86_cpu_to_node_map_early_ptr; |
@@ -65,21 +72,21 @@ static inline int early_cpu_to_node(int cpu) | |||
65 | else | 72 | else |
66 | return NUMA_NO_NODE; | 73 | return NUMA_NO_NODE; |
67 | } | 74 | } |
75 | #else | ||
76 | #define early_cpu_to_node(cpu) cpu_to_node(cpu) | ||
77 | #endif | ||
68 | 78 | ||
69 | static inline int cpu_to_node(int cpu) | 79 | static inline int cpu_to_node(int cpu) |
70 | { | 80 | { |
71 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS | 81 | #ifdef CONFIG_DEBUG_PER_CPU_MAPS |
72 | if (x86_cpu_to_node_map_early_ptr) { | 82 | if (x86_cpu_to_node_map_early_ptr) { |
73 | printk("KERN_NOTICE cpu_to_node(%d): usage too early!\n", | 83 | printk("KERN_NOTICE cpu_to_node(%d): usage too early!\n", |
74 | (int)cpu); | 84 | (int)cpu); |
75 | dump_stack(); | 85 | dump_stack(); |
76 | return ((int *)x86_cpu_to_node_map_early_ptr)[cpu]; | 86 | return ((int *)x86_cpu_to_node_map_early_ptr)[cpu]; |
77 | } | 87 | } |
78 | #endif | 88 | #endif |
79 | if (per_cpu_offset(cpu)) | 89 | return per_cpu(x86_cpu_to_node_map, cpu); |
80 | return per_cpu(x86_cpu_to_node_map, cpu); | ||
81 | else | ||
82 | return NUMA_NO_NODE; | ||
83 | } | 90 | } |
84 | #endif /* CONFIG_X86_64 */ | 91 | #endif /* CONFIG_X86_64 */ |
85 | 92 | ||