numa: x86_64: use generic percpu var numa_node_id() implementation
Subsystems (3)
PATCH 197/203 numa: x86_64: use generic percpu var numa_node_id() implementation
From: Lee Schermerhorn <[email protected]>
x86 arch specific changes to use generic numa_node_id() based on generic percpu variable infrastructure. Back out x86's custom version of numa_node_id()
Signed-off-by Lee Schermerhorn <[email protected]>
Cc Tejun Heo <[email protected]>
Cc Mel Gorman <[email protected]>
Cc Christoph Lameter <[email protected]>
Cc Nick Piggin <[email protected]>
Cc David Rientjes <[email protected]>
Cc Eric Whitney <[email protected]>
Cc KAMEZAWA Hiroyuki <[email protected]>
Cc Ingo Molnar <[email protected]>
Cc Thomas Gleixner <[email protected]>
Cc "H. Peter Anvin" <[email protected]>
Cc "Luck, Tony" <[email protected]>
Cc Pekka Enberg <[email protected]>
Cc <[email protected]>
Signed-off-by Andrew Morton <[email protected]>
---
arch/x86/Kconfig | 4 ++++ arch/x86/include/asm/topology.h | 22 +++++++++------------- arch/x86/kernel/cpu/common.c | 6 +++--- arch/x86/kernel/setup_percpu.c | 4 ++-- arch/x86/mm/numa_64.c | 9 +++------ 5 files changed, 21 insertions(+), 24 deletions(-)
arch/x86/Kconfig renamed from arch/x86/Kconfig~numa-x86_64-use-generic-percpu-var-numa_node_id-implementation +4 -0
@@ -1706,6 +1706,10 @@ config HAVE_ARCH_EARLY_PFN_TO_NID def_bool X86_64 depends on NUMA +config USE_PERCPU_NUMA_NODE_ID + def_bool X86_64 + depends on NUMA + menu "Power management and ACPI options" config ARCH_HIBERNATION_HEADER
arch/x86/include/asm/topology.h renamed from arch/x86/include/asm/topology.h~numa-x86_64-use-generic-percpu-var-numa_node_id-implementation +9 -13
@@ -53,33 +53,29 @@ extern int cpu_to_node_map[]; /* Returns the number of the node containing CPU 'cpu' */ -static inline int cpu_to_node(int cpu) +static inline int __cpu_to_node(int cpu) { return cpu_to_node_map[cpu]; } -#define early_cpu_to_node(cpu) cpu_to_node(cpu) +#define early_cpu_to_node __cpu_to_node +#define cpu_to_node __cpu_to_node #else /* CONFIG_X86_64 */ /* Mappings between logical cpu number and node number */ DECLARE_EARLY_PER_CPU(int, x86_cpu_to_node_map); -/* Returns the number of the current Node. */ -DECLARE_PER_CPU(int, node_number); -#define numa_node_id() percpu_read(node_number) - #ifdef CONFIG_DEBUG_PER_CPU_MAPS -extern int cpu_to_node(int cpu); +/* + * override generic percpu implementation of cpu_to_node + */ +extern int __cpu_to_node(int cpu); +#define cpu_to_node __cpu_to_node + extern int early_cpu_to_node(int cpu); #else /* !CONFIG_DEBUG_PER_CPU_MAPS */ -/* Returns the number of the node containing CPU 'cpu' */ -static inline int cpu_to_node(int cpu) -{ - return per_cpu(x86_cpu_to_node_map, cpu); -} - /* Same function but used if called before per_cpu areas are setup */ static inline int early_cpu_to_node(int cpu) {
arch/x86/kernel/cpu/common.c renamed from arch/x86/kernel/cpu/common.c~numa-x86_64-use-generic-percpu-var-numa_node_id-implementation +3 -3
@@ -1121,9 +1121,9 @@ void __cpuinit cpu_init(void) oist = &per_cpu (orig_ist, 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)); +if (cpu !=0 &&percpu_read (numa_node) ==0 && +early_cpu_to_node (cpu) !=NUMA_NO_NODE ) +set_numa_node (early_cpu_to_node (cpu));#endif me = current;
arch/x86/kernel/setup_percpu.c renamed from arch/x86/kernel/setup_percpu.c~numa-x86_64-use-generic-percpu-var-numa_node_id-implementation +2 -2
@@ -265,10 +265,10 @@ void __init setup_per_cpu_areas(void)#if defined(CONFIG_X86_64 ) && defined(CONFIG_NUMA )/* -* make sure boot cpu node_number is right, when boot cpu is on the +* make sure boot cpu numa_node is right, when boot cpu is on the * node that doesn't have mem installed */ -per_cpu (node_number, boot_cpu_id) =cpu_to_node (boot_cpu_id); +set_cpu_numa_node (boot_cpu_id,early_cpu_to_node (boot_cpu_id));#endif /* Setup node to cpumask map */
arch/x86/mm/numa_64.c renamed from arch/x86/mm/numa_64.c~numa-x86_64-use-generic-percpu-var-numa_node_id-implementation +3 -6
@@ -33,9 +33,6 @@ int numa_off __initdata;static unsigned long __initdata nodemap_addr;static unsigned long __initdata nodemap_size; -DEFINE_PER_CPU (int, node_number) =0 ; -EXPORT_PER_CPU_SYMBOL (node_number); -/* * Map cpu index to node index */
@@ -809,7 +806,7 @@ void __cpuinit numa_set_node(int cpu, inper_cpu (x86_cpu_to_node_map, cpu) = node;if (node !=NUMA_NO_NODE ) -per_cpu (node_number, cpu) = node; +set_cpu_numa_node (cpu, node); }void __cpuinit numa_clear_node (int cpu)
@@ -867,7 +864,7 @@ void __cpuinit numa_remove_cpu(int cpu)numa_set_cpumask (cpu,0 ); } -int cpu_to_node (int cpu) +int __cpu_to_node (int cpu) {if (early_per_cpu_ptr (x86_cpu_to_node_map)) { printk(KERN_WARNING
@@ -877,7 +874,7 @@ int cpu_to_node(int cpu) }return per_cpu (x86_cpu_to_node_map, cpu); } -EXPORT_SYMBOL (cpu_to_node); +EXPORT_SYMBOL (__cpu_to_node);/* * Same function as cpu_to_node() but used if called before the
_