diff options
author | Tejun Heo <tj@kernel.org> | 2009-01-13 06:41:35 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-16 08:20:03 -0500 |
commit | b12d8db8fbfaed1e8222a15333a3645599636854 (patch) | |
tree | 4ae6ce55232885d0707eb464c5b43a54bdfe3ce4 /arch/x86/include/asm | |
parent | 9939ddaff52787b2a7c1adf1b2afc95421aa0884 (diff) |
x86: make pda a percpu variable
[ Based on original patch from Christoph Lameter and Mike Travis. ]
As pda is now allocated in percpu area, it can easily be made a proper
percpu variable. Make it so by defining per cpu symbol from linker
script and declaring it in C code for SMP and simply defining it for
UP. This change cleans up code and brings SMP and UP closer a bit.
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/include/asm')
-rw-r--r-- | arch/x86/include/asm/pda.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/arch/x86/include/asm/pda.h b/arch/x86/include/asm/pda.h index e91558e37850..66ae1043393d 100644 --- a/arch/x86/include/asm/pda.h +++ b/arch/x86/include/asm/pda.h | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <linux/cache.h> | 7 | #include <linux/cache.h> |
8 | #include <linux/threads.h> | 8 | #include <linux/threads.h> |
9 | #include <asm/page.h> | 9 | #include <asm/page.h> |
10 | #include <asm/percpu.h> | ||
10 | 11 | ||
11 | /* Per processor datastructure. %gs points to it while the kernel runs */ | 12 | /* Per processor datastructure. %gs points to it while the kernel runs */ |
12 | struct x8664_pda { | 13 | struct x8664_pda { |
@@ -39,10 +40,10 @@ struct x8664_pda { | |||
39 | unsigned irq_spurious_count; | 40 | unsigned irq_spurious_count; |
40 | } ____cacheline_aligned_in_smp; | 41 | } ____cacheline_aligned_in_smp; |
41 | 42 | ||
42 | extern struct x8664_pda *_cpu_pda[NR_CPUS]; | 43 | DECLARE_PER_CPU(struct x8664_pda, __pda); |
43 | extern void pda_init(int); | 44 | extern void pda_init(int); |
44 | 45 | ||
45 | #define cpu_pda(i) (_cpu_pda[i]) | 46 | #define cpu_pda(cpu) (&per_cpu(__pda, cpu)) |
46 | 47 | ||
47 | /* | 48 | /* |
48 | * There is no fast way to get the base address of the PDA, all the accesses | 49 | * There is no fast way to get the base address of the PDA, all the accesses |