x86-64: Move nodenumber from PDA to per-cpu.
tj: * s/nodenumber/node_number/ * removed now unused pda variable from pda_init() Signed-off-by: Brian Gerst <brgerst@gmail.com> Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
parent
5689553076
commit
e7a22c1ebc
@ -22,7 +22,6 @@ struct x8664_pda {
|
|||||||
/* gcc-ABI: this canary MUST be at
|
/* gcc-ABI: this canary MUST be at
|
||||||
offset 40!!! */
|
offset 40!!! */
|
||||||
#endif
|
#endif
|
||||||
short nodenumber; /* number of current node (32k max) */
|
|
||||||
short in_bootmem; /* pda lives in bootmem */
|
short in_bootmem; /* pda lives in bootmem */
|
||||||
short isidle;
|
short isidle;
|
||||||
} ____cacheline_aligned_in_smp;
|
} ____cacheline_aligned_in_smp;
|
||||||
|
@ -83,7 +83,8 @@ extern cpumask_t *node_to_cpumask_map;
|
|||||||
DECLARE_EARLY_PER_CPU(int, x86_cpu_to_node_map);
|
DECLARE_EARLY_PER_CPU(int, x86_cpu_to_node_map);
|
||||||
|
|
||||||
/* Returns the number of the current Node. */
|
/* Returns the number of the current Node. */
|
||||||
#define numa_node_id() read_pda(nodenumber)
|
DECLARE_PER_CPU(int, node_number);
|
||||||
|
#define numa_node_id() percpu_read(node_number)
|
||||||
|
|
||||||
#ifdef CONFIG_DEBUG_PER_CPU_MAPS
|
#ifdef CONFIG_DEBUG_PER_CPU_MAPS
|
||||||
extern int cpu_to_node(int cpu);
|
extern int cpu_to_node(int cpu);
|
||||||
|
@ -897,18 +897,11 @@ DEFINE_PER_CPU(unsigned int, irq_count) = -1;
|
|||||||
|
|
||||||
void __cpuinit pda_init(int cpu)
|
void __cpuinit pda_init(int cpu)
|
||||||
{
|
{
|
||||||
struct x8664_pda *pda = cpu_pda(cpu);
|
|
||||||
|
|
||||||
/* Setup up data that may be needed in __get_free_pages early */
|
/* Setup up data that may be needed in __get_free_pages early */
|
||||||
loadsegment(fs, 0);
|
loadsegment(fs, 0);
|
||||||
loadsegment(gs, 0);
|
loadsegment(gs, 0);
|
||||||
|
|
||||||
load_pda_offset(cpu);
|
load_pda_offset(cpu);
|
||||||
|
|
||||||
if (cpu != 0) {
|
|
||||||
if (pda->nodenumber == 0 && cpu_to_node(cpu) != NUMA_NO_NODE)
|
|
||||||
pda->nodenumber = cpu_to_node(cpu);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks
|
static DEFINE_PER_CPU_PAGE_ALIGNED(char, exception_stacks
|
||||||
@ -978,6 +971,12 @@ void __cpuinit cpu_init(void)
|
|||||||
if (cpu != 0)
|
if (cpu != 0)
|
||||||
pda_init(cpu);
|
pda_init(cpu);
|
||||||
|
|
||||||
|
#ifdef CONFIG_NUMA
|
||||||
|
if (cpu != 0 && percpu_read(node_number) == 0 &&
|
||||||
|
cpu_to_node(cpu) != NUMA_NO_NODE)
|
||||||
|
percpu_write(node_number, cpu_to_node(cpu));
|
||||||
|
#endif
|
||||||
|
|
||||||
me = current;
|
me = current;
|
||||||
|
|
||||||
if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask))
|
if (cpumask_test_and_set_cpu(cpu, cpu_initialized_mask))
|
||||||
|
@ -53,6 +53,8 @@ EXPORT_EARLY_PER_CPU_SYMBOL(x86_bios_cpu_apicid);
|
|||||||
|
|
||||||
#if defined(CONFIG_NUMA) && defined(CONFIG_X86_64)
|
#if defined(CONFIG_NUMA) && defined(CONFIG_X86_64)
|
||||||
#define X86_64_NUMA 1 /* (used later) */
|
#define X86_64_NUMA 1 /* (used later) */
|
||||||
|
DEFINE_PER_CPU(int, node_number) = 0;
|
||||||
|
EXPORT_PER_CPU_SYMBOL(node_number);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Map cpu index to node index
|
* Map cpu index to node index
|
||||||
@ -283,7 +285,7 @@ void __cpuinit numa_set_node(int cpu, int node)
|
|||||||
per_cpu(x86_cpu_to_node_map, cpu) = node;
|
per_cpu(x86_cpu_to_node_map, cpu) = node;
|
||||||
|
|
||||||
if (node != NUMA_NO_NODE)
|
if (node != NUMA_NO_NODE)
|
||||||
cpu_pda(cpu)->nodenumber = node;
|
per_cpu(node_number, cpu) = node;
|
||||||
}
|
}
|
||||||
|
|
||||||
void __cpuinit numa_clear_node(int cpu)
|
void __cpuinit numa_clear_node(int cpu)
|
||||||
|
Loading…
Reference in New Issue
Block a user