diff options
author | travis@sgi.com <travis@sgi.com> | 2008-01-30 07:33:25 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:33:25 -0500 |
commit | 4323838215184f5a2f081e0d17b8d60731b03164 (patch) | |
tree | eb3553a15c127604044e6919c9c4a92cdb1b703a | |
parent | 409a7b859ddb6e0a615d9f3ccddedaec218c56b6 (diff) |
x86: change size of node ids from u8 to s16
Change the size of node ids for X86_64 from u8 to s16 to
accomodate more than 32k nodes and allow for NUMA_NO_NODE
(-1) to be sign extended to int.
Cc: David Rientjes <rientjes@google.com>
Cc: Yinghai Lu <yhlu.kernel@gmail.com>
Cc: Eric Dumazet <dada1@cosmosbay.com>
Signed-off-by: Mike Travis <travis@sgi.com>
Reviewed-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
-rw-r--r-- | arch/x86/Kconfig | 1 | ||||
-rw-r--r-- | arch/x86/mm/numa_64.c | 12 | ||||
-rw-r--r-- | include/asm-x86/mmzone_64.h | 6 | ||||
-rw-r--r-- | include/asm-x86/numa_64.h | 2 | ||||
-rw-r--r-- | include/asm-x86/topology.h | 10 |
5 files changed, 16 insertions, 15 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 2114b4c71fa0..81af31e5a9f1 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -848,6 +848,7 @@ config NUMA_EMU | |||
848 | 848 | ||
849 | config NODES_SHIFT | 849 | config NODES_SHIFT |
850 | int | 850 | int |
851 | range 1 15 if X86_64 | ||
851 | default "6" if X86_64 | 852 | default "6" if X86_64 |
852 | default "4" if X86_NUMAQ | 853 | default "4" if X86_NUMAQ |
853 | default "3" | 854 | default "3" |
diff --git a/arch/x86/mm/numa_64.c b/arch/x86/mm/numa_64.c index 441af4edea59..0ca96d86cb71 100644 --- a/arch/x86/mm/numa_64.c +++ b/arch/x86/mm/numa_64.c | |||
@@ -31,15 +31,15 @@ bootmem_data_t plat_node_bdata[MAX_NUMNODES]; | |||
31 | 31 | ||
32 | struct memnode memnode; | 32 | struct memnode memnode; |
33 | 33 | ||
34 | u16 x86_cpu_to_node_map_init[NR_CPUS] = { | 34 | int x86_cpu_to_node_map_init[NR_CPUS] = { |
35 | [0 ... NR_CPUS-1] = NUMA_NO_NODE | 35 | [0 ... NR_CPUS-1] = NUMA_NO_NODE |
36 | }; | 36 | }; |
37 | void *x86_cpu_to_node_map_early_ptr; | 37 | void *x86_cpu_to_node_map_early_ptr; |
38 | DEFINE_PER_CPU(u16, x86_cpu_to_node_map) = NUMA_NO_NODE; | 38 | DEFINE_PER_CPU(int, x86_cpu_to_node_map) = NUMA_NO_NODE; |
39 | EXPORT_PER_CPU_SYMBOL(x86_cpu_to_node_map); | 39 | EXPORT_PER_CPU_SYMBOL(x86_cpu_to_node_map); |
40 | EXPORT_SYMBOL(x86_cpu_to_node_map_early_ptr); | 40 | EXPORT_SYMBOL(x86_cpu_to_node_map_early_ptr); |
41 | 41 | ||
42 | u16 apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = { | 42 | s16 apicid_to_node[MAX_LOCAL_APIC] __cpuinitdata = { |
43 | [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE | 43 | [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE |
44 | }; | 44 | }; |
45 | 45 | ||
@@ -63,7 +63,7 @@ static int __init populate_memnodemap(const struct bootnode *nodes, | |||
63 | unsigned long addr, end; | 63 | unsigned long addr, end; |
64 | int i, res = -1; | 64 | int i, res = -1; |
65 | 65 | ||
66 | memset(memnodemap, 0xff, memnodemapsize); | 66 | memset(memnodemap, 0xff, sizeof(s16)*memnodemapsize); |
67 | for (i = 0; i < numnodes; i++) { | 67 | for (i = 0; i < numnodes; i++) { |
68 | addr = nodes[i].start; | 68 | addr = nodes[i].start; |
69 | end = nodes[i].end; | 69 | end = nodes[i].end; |
@@ -72,7 +72,7 @@ static int __init populate_memnodemap(const struct bootnode *nodes, | |||
72 | if ((end >> shift) >= memnodemapsize) | 72 | if ((end >> shift) >= memnodemapsize) |
73 | return 0; | 73 | return 0; |
74 | do { | 74 | do { |
75 | if (memnodemap[addr >> shift] != 0xff) | 75 | if (memnodemap[addr >> shift] != NUMA_NO_NODE) |
76 | return -1; | 76 | return -1; |
77 | memnodemap[addr >> shift] = i; | 77 | memnodemap[addr >> shift] = i; |
78 | addr += (1UL << shift); | 78 | addr += (1UL << shift); |
@@ -533,7 +533,7 @@ __cpuinit void numa_add_cpu(int cpu) | |||
533 | 533 | ||
534 | void __cpuinit numa_set_node(int cpu, int node) | 534 | void __cpuinit numa_set_node(int cpu, int node) |
535 | { | 535 | { |
536 | u16 *cpu_to_node_map = x86_cpu_to_node_map_early_ptr; | 536 | int *cpu_to_node_map = x86_cpu_to_node_map_early_ptr; |
537 | 537 | ||
538 | cpu_pda(cpu)->nodenumber = node; | 538 | cpu_pda(cpu)->nodenumber = node; |
539 | 539 | ||
diff --git a/include/asm-x86/mmzone_64.h b/include/asm-x86/mmzone_64.h index b0c25ae111d9..ebaf9663aa8a 100644 --- a/include/asm-x86/mmzone_64.h +++ b/include/asm-x86/mmzone_64.h | |||
@@ -15,9 +15,9 @@ | |||
15 | struct memnode { | 15 | struct memnode { |
16 | int shift; | 16 | int shift; |
17 | unsigned int mapsize; | 17 | unsigned int mapsize; |
18 | u8 *map; | 18 | s16 *map; |
19 | u8 embedded_map[64-16]; | 19 | s16 embedded_map[64-8]; |
20 | } ____cacheline_aligned; /* total size = 64 bytes */ | 20 | } ____cacheline_aligned; /* total size = 128 bytes */ |
21 | extern struct memnode memnode; | 21 | extern struct memnode memnode; |
22 | #define memnode_shift memnode.shift | 22 | #define memnode_shift memnode.shift |
23 | #define memnodemap memnode.map | 23 | #define memnodemap memnode.map |
diff --git a/include/asm-x86/numa_64.h b/include/asm-x86/numa_64.h index c797cd523d2b..15fe07cde586 100644 --- a/include/asm-x86/numa_64.h +++ b/include/asm-x86/numa_64.h | |||
@@ -20,7 +20,7 @@ extern void numa_set_node(int cpu, int node); | |||
20 | extern void srat_reserve_add_area(int nodeid); | 20 | extern void srat_reserve_add_area(int nodeid); |
21 | extern int hotadd_percent; | 21 | extern int hotadd_percent; |
22 | 22 | ||
23 | extern u16 apicid_to_node[MAX_LOCAL_APIC]; | 23 | extern s16 apicid_to_node[MAX_LOCAL_APIC]; |
24 | 24 | ||
25 | extern void numa_initmem_init(unsigned long start_pfn, unsigned long end_pfn); | 25 | extern void numa_initmem_init(unsigned long start_pfn, unsigned long end_pfn); |
26 | extern unsigned long numa_free_all_bootmem(void); | 26 | extern unsigned long numa_free_all_bootmem(void); |
diff --git a/include/asm-x86/topology.h b/include/asm-x86/topology.h index 7b0cce2f370d..8af05a93f097 100644 --- a/include/asm-x86/topology.h +++ b/include/asm-x86/topology.h | |||
@@ -31,11 +31,11 @@ | |||
31 | 31 | ||
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 u8 cpu_to_node_map[]; | 34 | extern int cpu_to_node_map[]; |
35 | 35 | ||
36 | #else | 36 | #else |
37 | DECLARE_PER_CPU(u16, x86_cpu_to_node_map); | 37 | DECLARE_PER_CPU(int, x86_cpu_to_node_map); |
38 | extern u16 x86_cpu_to_node_map_init[]; | 38 | extern int x86_cpu_to_node_map_init[]; |
39 | extern void *x86_cpu_to_node_map_early_ptr; | 39 | extern void *x86_cpu_to_node_map_early_ptr; |
40 | /* Returns the number of the current Node. */ | 40 | /* Returns the number of the current Node. */ |
41 | #define numa_node_id() (early_cpu_to_node(raw_smp_processor_id())) | 41 | #define numa_node_id() (early_cpu_to_node(raw_smp_processor_id())) |
@@ -43,7 +43,7 @@ extern void *x86_cpu_to_node_map_early_ptr; | |||
43 | 43 | ||
44 | extern cpumask_t node_to_cpumask_map[]; | 44 | extern cpumask_t node_to_cpumask_map[]; |
45 | 45 | ||
46 | #define NUMA_NO_NODE ((u16)(~0)) | 46 | #define NUMA_NO_NODE (-1) |
47 | 47 | ||
48 | /* Returns the number of the node containing CPU 'cpu' */ | 48 | /* Returns the number of the node containing CPU 'cpu' */ |
49 | #ifdef CONFIG_X86_32 | 49 | #ifdef CONFIG_X86_32 |
@@ -56,7 +56,7 @@ static inline int cpu_to_node(int cpu) | |||
56 | #else /* CONFIG_X86_64 */ | 56 | #else /* CONFIG_X86_64 */ |
57 | static inline int early_cpu_to_node(int cpu) | 57 | static inline int early_cpu_to_node(int cpu) |
58 | { | 58 | { |
59 | u16 *cpu_to_node_map = x86_cpu_to_node_map_early_ptr; | 59 | int *cpu_to_node_map = x86_cpu_to_node_map_early_ptr; |
60 | 60 | ||
61 | if (cpu_to_node_map) | 61 | if (cpu_to_node_map) |
62 | return cpu_to_node_map[cpu]; | 62 | return cpu_to_node_map[cpu]; |