diff options
-rw-r--r-- | arch/x86/Kconfig | 2 | ||||
-rw-r--r-- | include/asm-generic/percpu.h | 12 | ||||
-rw-r--r-- | init/main.c | 4 | ||||
-rw-r--r-- | kernel/module.c | 8 |
4 files changed, 13 insertions, 13 deletions
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig index f0887d12a5bb..8e1b33c5405f 100644 --- a/arch/x86/Kconfig +++ b/arch/x86/Kconfig | |||
@@ -97,7 +97,7 @@ 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 | 100 | config HAVE_SETUP_PER_CPU_AREA |
101 | def_bool X86_64 | 101 | def_bool X86_64 |
102 | 102 | ||
103 | config ARCH_SUPPORTS_OPROFILE | 103 | config ARCH_SUPPORTS_OPROFILE |
diff --git a/include/asm-generic/percpu.h b/include/asm-generic/percpu.h index c41b1a731129..4b8d31cda1a0 100644 --- a/include/asm-generic/percpu.h +++ b/include/asm-generic/percpu.h | |||
@@ -47,7 +47,7 @@ extern unsigned long __per_cpu_offset[NR_CPUS]; | |||
47 | #endif | 47 | #endif |
48 | 48 | ||
49 | /* | 49 | /* |
50 | * A percpu variable may point to a discarded reghions. The following are | 50 | * A percpu variable may point to a discarded regions. The following are |
51 | * established ways to produce a usable pointer from the percpu variable | 51 | * established ways to produce a usable pointer from the percpu variable |
52 | * offset. | 52 | * offset. |
53 | */ | 53 | */ |
@@ -59,18 +59,10 @@ extern unsigned long __per_cpu_offset[NR_CPUS]; | |||
59 | (*SHIFT_PERCPU_PTR(&per_cpu_var(var), __my_cpu_offset)) | 59 | (*SHIFT_PERCPU_PTR(&per_cpu_var(var), __my_cpu_offset)) |
60 | 60 | ||
61 | 61 | ||
62 | #ifdef CONFIG_ARCH_SETS_UP_PER_CPU_AREA | 62 | #ifdef CONFIG_HAVE_SETUP_PER_CPU_AREA |
63 | extern void setup_per_cpu_areas(void); | 63 | extern void setup_per_cpu_areas(void); |
64 | #endif | 64 | #endif |
65 | 65 | ||
66 | /* A macro to avoid #include hell... */ | ||
67 | #define percpu_modcopy(pcpudst, src, size) \ | ||
68 | do { \ | ||
69 | unsigned int __i; \ | ||
70 | for_each_possible_cpu(__i) \ | ||
71 | memcpy((pcpudst)+per_cpu_offset(__i), \ | ||
72 | (src), (size)); \ | ||
73 | } while (0) | ||
74 | #else /* ! SMP */ | 66 | #else /* ! SMP */ |
75 | 67 | ||
76 | #define per_cpu(var, cpu) (*((void)(cpu), &per_cpu_var(var))) | 68 | #define per_cpu(var, cpu) (*((void)(cpu), &per_cpu_var(var))) |
diff --git a/init/main.c b/init/main.c index 5843fe996703..3316dffe3e57 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 | #ifndef CONFIG_ARCH_SETS_UP_PER_CPU_AREA | 366 | #ifndef CONFIG_HAVE_SETUP_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 /* CONFIG_ARCH_SETS_UP_CPU_AREA */ | 387 | #endif /* CONFIG_HAVE_SETUP_PER_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) |
diff --git a/kernel/module.c b/kernel/module.c index f6a4e721fd49..bd60278ee703 100644 --- a/kernel/module.c +++ b/kernel/module.c | |||
@@ -430,6 +430,14 @@ static unsigned int find_pcpusec(Elf_Ehdr *hdr, | |||
430 | return find_sec(hdr, sechdrs, secstrings, ".data.percpu"); | 430 | return find_sec(hdr, sechdrs, secstrings, ".data.percpu"); |
431 | } | 431 | } |
432 | 432 | ||
433 | static void percpu_modcopy(void *pcpudest, const void *from, unsigned long size) | ||
434 | { | ||
435 | int cpu; | ||
436 | |||
437 | for_each_possible_cpu(cpu) | ||
438 | memcpy(pcpudest + per_cpu_offset(cpu), from, size); | ||
439 | } | ||
440 | |||
433 | static int percpu_modinit(void) | 441 | static int percpu_modinit(void) |
434 | { | 442 | { |
435 | pcpu_num_used = 2; | 443 | pcpu_num_used = 2; |