From 93329d43ee0212ab0c42e79f6d3bb3fff98e9bd0 Mon Sep 17 00:00:00 2001 From: "David S. Miller" Date: Thu, 14 Dec 2006 23:40:57 -0800 Subject: [PATCH] --- yaml --- r: 44642 b: refs/heads/master c: 5a089006bf8b59f6610de11a857854d8f8730658 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/sparc64/kernel/smp.c | 7 ++----- trunk/include/asm-sparc64/percpu.h | 10 ++++++++++ 3 files changed, 13 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index 539ab1062f0d..eafa96706c4e 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9bc83dcff8fab1f22048c8f82deb3198ec44d53f +refs/heads/master: 5a089006bf8b59f6610de11a857854d8f8730658 diff --git a/trunk/arch/sparc64/kernel/smp.c b/trunk/arch/sparc64/kernel/smp.c index cc09d8266414..0a4958536bcd 100644 --- a/trunk/arch/sparc64/kernel/smp.c +++ b/trunk/arch/sparc64/kernel/smp.c @@ -1447,11 +1447,8 @@ void __init setup_per_cpu_areas(void) char *ptr; /* Copy section for each CPU (we discard the original) */ - goal = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES); -#ifdef CONFIG_MODULES - if (goal < PERCPU_ENOUGH_ROOM) - goal = PERCPU_ENOUGH_ROOM; -#endif + goal = PERCPU_ENOUGH_ROOM; + __per_cpu_shift = 0; for (size = 1UL; size < goal; size <<= 1UL) __per_cpu_shift++; diff --git a/trunk/include/asm-sparc64/percpu.h b/trunk/include/asm-sparc64/percpu.h index ced8cbde046d..0d3df76aa47f 100644 --- a/trunk/include/asm-sparc64/percpu.h +++ b/trunk/include/asm-sparc64/percpu.h @@ -5,6 +5,16 @@ #ifdef CONFIG_SMP +#ifdef CONFIG_MODULES +# define PERCPU_MODULE_RESERVE 8192 +#else +# define PERCPU_MODULE_RESERVE 0 +#endif + +#define PERCPU_ENOUGH_ROOM \ + (ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES) + \ + PERCPU_MODULE_RESERVE) + extern void setup_per_cpu_areas(void); extern unsigned long __per_cpu_base;