Browse Source

[SPARC64]: Mirror x86_64's PERCPU_ENOUGH_ROOM definition.

Signed-off-by: David S. Miller <davem@davemloft.net>
David S. Miller 18 years ago
parent
commit
5a089006bf
2 changed files with 12 additions and 5 deletions
  1. 2 5
      arch/sparc64/kernel/smp.c
  2. 10 0
      include/asm-sparc64/percpu.h

+ 2 - 5
arch/sparc64/kernel/smp.c

@@ -1447,11 +1447,8 @@ void __init setup_per_cpu_areas(void)
 	char *ptr;
 	char *ptr;
 
 
 	/* Copy section for each CPU (we discard the original) */
 	/* 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;
 	__per_cpu_shift = 0;
 	for (size = 1UL; size < goal; size <<= 1UL)
 	for (size = 1UL; size < goal; size <<= 1UL)
 		__per_cpu_shift++;
 		__per_cpu_shift++;

+ 10 - 0
include/asm-sparc64/percpu.h

@@ -5,6 +5,16 @@
 
 
 #ifdef CONFIG_SMP
 #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 void setup_per_cpu_areas(void);
 
 
 extern unsigned long __per_cpu_base;
 extern unsigned long __per_cpu_base;