Commit 4323838215184f5a2f081e0d17b8d60731b03164
Committed by
Ingo Molnar
1 parent
409a7b859d
Exists in
master
and in
20 other branches
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>
Showing 5 changed files with 16 additions and 15 deletions Side-by-side Diff
arch/x86/Kconfig
arch/x86/mm/numa_64.c
... | ... | @@ -31,15 +31,15 @@ |
31 | 31 | |
32 | 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 | 35 | [0 ... NR_CPUS-1] = NUMA_NO_NODE |
36 | 36 | }; |
37 | 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 | 39 | EXPORT_PER_CPU_SYMBOL(x86_cpu_to_node_map); |
40 | 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 | 43 | [0 ... MAX_LOCAL_APIC-1] = NUMA_NO_NODE |
44 | 44 | }; |
45 | 45 | |
... | ... | @@ -63,7 +63,7 @@ |
63 | 63 | unsigned long addr, end; |
64 | 64 | int i, res = -1; |
65 | 65 | |
66 | - memset(memnodemap, 0xff, memnodemapsize); | |
66 | + memset(memnodemap, 0xff, sizeof(s16)*memnodemapsize); | |
67 | 67 | for (i = 0; i < numnodes; i++) { |
68 | 68 | addr = nodes[i].start; |
69 | 69 | end = nodes[i].end; |
... | ... | @@ -72,7 +72,7 @@ |
72 | 72 | if ((end >> shift) >= memnodemapsize) |
73 | 73 | return 0; |
74 | 74 | do { |
75 | - if (memnodemap[addr >> shift] != 0xff) | |
75 | + if (memnodemap[addr >> shift] != NUMA_NO_NODE) | |
76 | 76 | return -1; |
77 | 77 | memnodemap[addr >> shift] = i; |
78 | 78 | addr += (1UL << shift); |
... | ... | @@ -533,7 +533,7 @@ |
533 | 533 | |
534 | 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 | 538 | cpu_pda(cpu)->nodenumber = node; |
539 | 539 |
include/asm-x86/mmzone_64.h
... | ... | @@ -15,9 +15,9 @@ |
15 | 15 | struct memnode { |
16 | 16 | int shift; |
17 | 17 | unsigned int mapsize; |
18 | - u8 *map; | |
19 | - u8 embedded_map[64-16]; | |
20 | -} ____cacheline_aligned; /* total size = 64 bytes */ | |
18 | + s16 *map; | |
19 | + s16 embedded_map[64-8]; | |
20 | +} ____cacheline_aligned; /* total size = 128 bytes */ | |
21 | 21 | extern struct memnode memnode; |
22 | 22 | #define memnode_shift memnode.shift |
23 | 23 | #define memnodemap memnode.map |
include/asm-x86/numa_64.h
... | ... | @@ -20,7 +20,7 @@ |
20 | 20 | extern void srat_reserve_add_area(int nodeid); |
21 | 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 | 25 | extern void numa_initmem_init(unsigned long start_pfn, unsigned long end_pfn); |
26 | 26 | extern unsigned long numa_free_all_bootmem(void); |
include/asm-x86/topology.h
... | ... | @@ -31,11 +31,11 @@ |
31 | 31 | |
32 | 32 | /* Mappings between logical cpu number and node number */ |
33 | 33 | #ifdef CONFIG_X86_32 |
34 | -extern u8 cpu_to_node_map[]; | |
34 | +extern int cpu_to_node_map[]; | |
35 | 35 | |
36 | 36 | #else |
37 | -DECLARE_PER_CPU(u16, x86_cpu_to_node_map); | |
38 | -extern u16 x86_cpu_to_node_map_init[]; | |
37 | +DECLARE_PER_CPU(int, x86_cpu_to_node_map); | |
38 | +extern int x86_cpu_to_node_map_init[]; | |
39 | 39 | extern void *x86_cpu_to_node_map_early_ptr; |
40 | 40 | /* Returns the number of the current Node. */ |
41 | 41 | #define numa_node_id() (early_cpu_to_node(raw_smp_processor_id())) |
... | ... | @@ -43,7 +43,7 @@ |
43 | 43 | |
44 | 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 | 48 | /* Returns the number of the node containing CPU 'cpu' */ |
49 | 49 | #ifdef CONFIG_X86_32 |
... | ... | @@ -56,7 +56,7 @@ |
56 | 56 | #else /* CONFIG_X86_64 */ |
57 | 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 | 61 | if (cpu_to_node_map) |
62 | 62 | return cpu_to_node_map[cpu]; |