* [PATCH 1/2] Account for module percpu space separately from kernel percpu
@ 2007-04-10 17:09 Jeremy Fitzhardinge
2007-04-10 22:16 ` Eric W. Biederman
0 siblings, 1 reply; 4+ messages in thread
From: Jeremy Fitzhardinge @ 2007-04-10 17:09 UTC (permalink / raw)
To: Andrew Morton
Cc: Andi Kleen, Linux Kernel Mailing List, Eric W. Biederman,
Rusty Russell
Rather than using a single constant PERCPU_ENOUGH_ROOM, compute it as
the sum of kernel_percpu + PERCPU_MODULE_RESERVE. This is now common
to all architectures; if an architecture wants to set
PERCPU_ENOUGH_ROOM to something special, then it may do so (ia64 is
the only one which does).
Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com>
Cc: Rusty Russell <rusty@rustcorp.com.au>
Cc: Eric W. Biederman <ebiederm@xmission.com>
Cc: Andi Kleen <ak@suse.de>
---
include/asm-alpha/percpu.h | 14 --------------
include/asm-sparc64/percpu.h | 10 ----------
include/asm-x86_64/percpu.h | 10 ----------
include/linux/percpu.h | 9 ++++++++-
init/main.c | 7 ++-----
kernel/module.c | 2 +-
6 files changed, 11 insertions(+), 41 deletions(-)
===================================================================
--- a/include/asm-alpha/percpu.h
+++ b/include/asm-alpha/percpu.h
@@ -1,19 +1,5 @@
#ifndef __ALPHA_PERCPU_H
#define __ALPHA_PERCPU_H
-
-/*
- * Increase the per cpu area for Alpha so that
- * modules using percpu area can load.
- */
-#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)
#include <asm-generic/percpu.h>
===================================================================
--- a/include/asm-sparc64/percpu.h
+++ b/include/asm-sparc64/percpu.h
@@ -4,16 +4,6 @@
#include <linux/compiler.h>
#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);
===================================================================
--- a/include/asm-x86_64/percpu.h
+++ b/include/asm-x86_64/percpu.h
@@ -10,16 +10,6 @@
#ifdef CONFIG_SMP
#include <asm/pda.h>
-
-#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)
#define __per_cpu_offset(cpu) (cpu_pda(cpu)->data_offset)
#define __my_cpu_offset() read_pda(data_offset)
===================================================================
--- a/include/linux/percpu.h
+++ b/include/linux/percpu.h
@@ -11,8 +11,15 @@
/* Enough to cover all DEFINE_PER_CPUs in kernel, including modules. */
#ifndef PERCPU_ENOUGH_ROOM
-#define PERCPU_ENOUGH_ROOM 32768
+#ifdef CONFIG_MODULES
+#define PERCPU_MODULE_RESERVE 8192
+#else
+#define PERCPU_MODULE_RESERVE 0
#endif
+
+#define PERCPU_ENOUGH_ROOM \
+ (__per_cpu_end - __per_cpu_start + PERCPU_MODULE_RESERVE)
+#endif /* PERCPU_ENOUGH_ROOM */
/*
* Must be an lvalue. Since @var must be a simple identifier,
===================================================================
--- a/init/main.c
+++ b/init/main.c
@@ -369,11 +369,8 @@ static void __init setup_per_cpu_areas(v
unsigned long nr_possible_cpus = num_possible_cpus();
/* Copy section for each CPU (we discard the original) */
- size = ALIGN(__per_cpu_end - __per_cpu_start, SMP_CACHE_BYTES);
-#ifdef CONFIG_MODULES
- if (size < PERCPU_ENOUGH_ROOM)
- size = PERCPU_ENOUGH_ROOM;
-#endif
+
+ size = ALIGN(PERCPU_ENOUGH_ROOM, SMP_CACHE_BYTES);
ptr = alloc_bootmem(size * nr_possible_cpus);
for_each_possible_cpu(i) {
===================================================================
--- a/kernel/module.c
+++ b/kernel/module.c
@@ -430,7 +430,7 @@ static int percpu_modinit(void)
pcpu_size = kmalloc(sizeof(pcpu_size[0]) * pcpu_num_allocated,
GFP_KERNEL);
/* Static in-kernel percpu data (used). */
- pcpu_size[0] = -ALIGN(__per_cpu_end-__per_cpu_start, SMP_CACHE_BYTES);
+ pcpu_size[0] = -(__per_cpu_end-__per_cpu_start);
/* Free room. */
pcpu_size[1] = PERCPU_ENOUGH_ROOM + pcpu_size[0];
if (pcpu_size[1] < 0) {
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH 1/2] Account for module percpu space separately from kernel percpu
2007-04-10 17:09 [PATCH 1/2] Account for module percpu space separately from kernel percpu Jeremy Fitzhardinge
@ 2007-04-10 22:16 ` Eric W. Biederman
2007-04-10 22:19 ` Jeremy Fitzhardinge
0 siblings, 1 reply; 4+ messages in thread
From: Eric W. Biederman @ 2007-04-10 22:16 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Andrew Morton, Andi Kleen, Linux Kernel Mailing List,
Eric W. Biederman, Rusty Russell
Jeremy Fitzhardinge <jeremy@goop.org> writes:
> Rather than using a single constant PERCPU_ENOUGH_ROOM, compute it as
> the sum of kernel_percpu + PERCPU_MODULE_RESERVE. This is now common
> to all architectures; if an architecture wants to set
> PERCPU_ENOUGH_ROOM to something special, then it may do so (ia64 is
> the only one which does).
I think I have already done this but in case I haven't.
Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
I see any problems there.
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] Account for module percpu space separately from kernel percpu
2007-04-10 22:16 ` Eric W. Biederman
@ 2007-04-10 22:19 ` Jeremy Fitzhardinge
2007-04-10 22:30 ` Eric W. Biederman
0 siblings, 1 reply; 4+ messages in thread
From: Jeremy Fitzhardinge @ 2007-04-10 22:19 UTC (permalink / raw)
To: Eric W. Biederman
Cc: Andrew Morton, Andi Kleen, Linux Kernel Mailing List,
Rusty Russell
Eric W. Biederman wrote:
> I think I have already done this but in case I haven't.
> Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
>
> I see any problems there.
>
^don't?
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH 1/2] Account for module percpu space separately from kernel percpu
2007-04-10 22:19 ` Jeremy Fitzhardinge
@ 2007-04-10 22:30 ` Eric W. Biederman
0 siblings, 0 replies; 4+ messages in thread
From: Eric W. Biederman @ 2007-04-10 22:30 UTC (permalink / raw)
To: Jeremy Fitzhardinge
Cc: Andrew Morton, Andi Kleen, Linux Kernel Mailing List,
Rusty Russell
Jeremy Fitzhardinge <jeremy@goop.org> writes:
> Eric W. Biederman wrote:
>> I think I have already done this but in case I haven't.
>> Acked-by: "Eric W. Biederman" <ebiederm@xmission.com>
>>
>> I see any problems there.
>>
> ^don't?
Yep. I did not see any problems with the patch.
Eric
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2007-04-10 22:31 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-04-10 17:09 [PATCH 1/2] Account for module percpu space separately from kernel percpu Jeremy Fitzhardinge
2007-04-10 22:16 ` Eric W. Biederman
2007-04-10 22:19 ` Jeremy Fitzhardinge
2007-04-10 22:30 ` Eric W. Biederman
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox