diff options
author | travis@sgi.com <travis@sgi.com> | 2008-01-30 07:32:51 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:32:51 -0500 |
commit | b32ef636a59aad12f9f9b5dc34c93222842c58ba (patch) | |
tree | 6857cac9a741be756608793ab1b481bfa32d2c2e | |
parent | cf8fa920cb4271f17e0265c863d64bea1b31941a (diff) |
percpu: use a kconfig variable to signal arch specific percpu setup
The use of the __GENERIC_PERCPU is a bit problematic since arches
may want to run their own percpu setup while using the generic
percpu definitions. Replace it through a kconfig variable.
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Andi Kleen <ak@suse.de>
Signed-off-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Mike Travis <travis@sgi.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
-rw-r--r-- | arch/ia64/Kconfig | 3 | ||||
-rw-r--r-- | arch/powerpc/Kconfig | 3 | ||||
-rw-r--r-- | arch/sparc64/Kconfig | 3 | ||||
-rw-r--r-- | arch/x86/Kconfig | 3 | ||||
-rw-r--r-- | include/asm-generic/percpu.h | 1 | ||||
-rw-r--r-- | include/asm-s390/percpu.h | 2 | ||||
-rw-r--r-- | include/asm-x86/percpu_32.h | 2 | ||||
-rw-r--r-- | init/main.c | 4 |
8 files changed, 14 insertions, 7 deletions
diff --git a/arch/ia64/Kconfig b/arch/ia64/Kconfig index 4a81b7fb191a..5a41e75ae1fe 100644 --- a/arch/ia64/Kconfig +++ b/arch/ia64/Kconfig | |||
@@ -80,6 +80,9 @@ config GENERIC_TIME_VSYSCALL | |||
80 | bool | 80 | bool |
81 | default y | 81 | default y |
82 | 82 | ||
83 | config ARCH_SETS_UP_PER_CPU_AREA | ||
84 | def_bool y | ||
85 | |||
83 | config DMI | 86 | config DMI |
84 | bool | 87 | bool |
85 | default y | 88 | default y |
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig index c17a194beb0e..fb85f6b72fcf 100644 --- a/arch/powerpc/Kconfig +++ b/arch/powerpc/Kconfig | |||
@@ -42,6 +42,9 @@ config GENERIC_HARDIRQS | |||
42 | bool | 42 | bool |
43 | default y | 43 | default y |
44 | 44 | ||
45 | config ARCH_SETS_UP_PER_CPU_AREA | ||
46 | def_bool PPC64 | ||
47 | |||
45 | config IRQ_PER_CPU | 48 | config IRQ_PER_CPU |
46 | bool | 49 | bool |
47 | default y | 50 | default y |
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig index 1e25bce0366d..26f5791baa33 100644 --- a/arch/sparc64/Kconfig +++ b/arch/sparc64/Kconfig | |||
@@ -66,6 +66,9 @@ config AUDIT_ARCH | |||
66 | bool | 66 | bool |
67 | default y | 67 | default y |
68 | 68 | ||
69 | config ARCH_SETS_UP_PER_CPU_AREA | ||
70 | def_bool y | ||
71 | |||
69 | config ARCH_NO_VIRT_TO_BUS | 72 | config ARCH_NO_VIRT_TO_BUS |
70 | def_bool y | 73 | def_bool y |
71 | 74 | ||
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index 1de28e850aa4..dc80a9f1f303 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -97,6 +97,9 @@ config GENERIC_TIME_VSYSCALL | |||
97 | bool | 97 | bool |
98 | default X86_64 | 98 | default X86_64 |
99 | 99 | ||
100 | config ARCH_SETS_UP_PER_CPU_AREA | ||
101 | def_bool X86_64 | ||
102 | |||
100 | config ARCH_SUPPORTS_OPROFILE | 103 | config ARCH_SUPPORTS_OPROFILE |
101 | bool | 104 | bool |
102 | default y | 105 | default y |
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h index d85172e9ed45..b5e53b9ab1f7 100644 --- a/include/asm-generic/percpu.h +++ b/include/asm-generic/percpu.h | |||
@@ -3,7 +3,6 @@ | |||
3 | #include <linux/compiler.h> | 3 | #include <linux/compiler.h> |
4 | #include <linux/threads.h> | 4 | #include <linux/threads.h> |
5 | 5 | ||
6 | #define __GENERIC_PER_CPU | ||
7 | #ifdef CONFIG_SMP | 6 | #ifdef CONFIG_SMP |
8 | 7 | ||
9 | extern unsigned long __per_cpu_offset[NR_CPUS]; | 8 | extern unsigned long __per_cpu_offset[NR_CPUS]; |
diff --git a/include/asm-s390/percpu.h b/include/asm-s390/percpu.h index 545857e64443..f94d0d3cdb2f 100644 --- a/include/asm-s390/percpu.h +++ b/include/asm-s390/percpu.h | |||
@@ -4,8 +4,6 @@ | |||
4 | #include <linux/compiler.h> | 4 | #include <linux/compiler.h> |
5 | #include <asm/lowcore.h> | 5 | #include <asm/lowcore.h> |
6 | 6 | ||
7 | #define __GENERIC_PER_CPU | ||
8 | |||
9 | /* | 7 | /* |
10 | * s390 uses its own implementation for per cpu data, the offset of | 8 | * s390 uses its own implementation for per cpu data, the offset of |
11 | * the cpu local data area is cached in the cpu's lowcore memory. | 9 | * the cpu local data area is cached in the cpu's lowcore memory. |
diff --git a/include/asm-x86/percpu_32.h b/include/asm-x86/percpu_32.h index a7ebd436f3cc..3949586bf94e 100644 --- a/include/asm-x86/percpu_32.h +++ b/include/asm-x86/percpu_32.h | |||
@@ -41,8 +41,6 @@ | |||
41 | * PER_CPU(cpu_gdt_descr, %ebx) | 41 | * PER_CPU(cpu_gdt_descr, %ebx) |
42 | */ | 42 | */ |
43 | #ifdef CONFIG_SMP | 43 | #ifdef CONFIG_SMP |
44 | /* Same as generic implementation except for optimized local access. */ | ||
45 | #define __GENERIC_PER_CPU | ||
46 | 44 | ||
47 | /* This is used for other cpus to find our section. */ | 45 | /* This is used for other cpus to find our section. */ |
48 | extern unsigned long __per_cpu_offset[]; | 46 | extern unsigned long __per_cpu_offset[]; |
diff --git a/init/main.c b/init/main.c index f287ca5862b9..3f8aba291ed3 100644 --- a/init/main.c +++ b/init/main.c | |||
@@ -363,7 +363,7 @@ static inline void smp_prepare_cpus(unsigned int maxcpus) { } | |||
363 | 363 | ||
364 | #else | 364 | #else |
365 | 365 | ||
366 | #ifdef __GENERIC_PER_CPU | 366 | #ifndef CONFIG_ARCH_SETS_UP_PER_CPU_AREA |
367 | unsigned long __per_cpu_offset[NR_CPUS] __read_mostly; | 367 | unsigned long __per_cpu_offset[NR_CPUS] __read_mostly; |
368 | 368 | ||
369 | EXPORT_SYMBOL(__per_cpu_offset); | 369 | EXPORT_SYMBOL(__per_cpu_offset); |
@@ -384,7 +384,7 @@ static void __init setup_per_cpu_areas(void) | |||
384 | ptr += size; | 384 | ptr += size; |
385 | } | 385 | } |
386 | } | 386 | } |
387 | #endif /* !__GENERIC_PER_CPU */ | 387 | #endif /* CONFIG_ARCH_SETS_UP_CPU_AREA */ |
388 | 388 | ||
389 | /* Called by boot processor to activate the rest. */ | 389 | /* Called by boot processor to activate the rest. */ |
390 | static void __init smp_init(void) | 390 | static void __init smp_init(void) |