diff options
author | travis@sgi.com <travis@sgi.com> | 2008-01-30 07:33:12 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-30 07:33:12 -0500 |
commit | e8c10ef9dde3ab7b7d7db6804859d9daf38f01c4 (patch) | |
tree | 528635634911cc977325b746aa149a55b402b2bf /include/asm-x86/smp_64.h | |
parent | ea348f3e58f43a27c8ac414dd3a14ee59528b86a (diff) |
x86: change bios_cpu_apicid to percpu data variable
Change static bios_cpu_apicid array to a per_cpu data variable.
This includes using a static array used during initialization
similar to the way x86_cpu_to_apicid[] is handled.
There is one early use of bios_cpu_apicid in apic_is_clustered_box().
The other reference in cpu_present_to_apicid() is called after
smp_set_apicids() has setup the percpu version of bios_cpu_apicid.
[ mingo@elte.hu: build fix ]
Signed-off-by: Mike Travis <travis@sgi.com>
Reviewed-by: Christoph Lameter <clameter@sgi.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/asm-x86/smp_64.h')
-rw-r--r-- | include/asm-x86/smp_64.h | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/include/asm-x86/smp_64.h b/include/asm-x86/smp_64.h index 6fa332db29cc..e0a75519ad21 100644 --- a/include/asm-x86/smp_64.h +++ b/include/asm-x86/smp_64.h | |||
@@ -27,18 +27,20 @@ extern int smp_call_function_mask(cpumask_t mask, void (*func)(void *), | |||
27 | void *info, int wait); | 27 | void *info, int wait); |
28 | 28 | ||
29 | extern u16 __initdata x86_cpu_to_apicid_init[]; | 29 | extern u16 __initdata x86_cpu_to_apicid_init[]; |
30 | extern u16 __initdata x86_bios_cpu_apicid_init[]; | ||
30 | extern void *x86_cpu_to_apicid_early_ptr; | 31 | extern void *x86_cpu_to_apicid_early_ptr; |
31 | extern u16 bios_cpu_apicid[]; | 32 | extern void *x86_bios_cpu_apicid_early_ptr; |
32 | 33 | ||
33 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); | 34 | DECLARE_PER_CPU(cpumask_t, cpu_sibling_map); |
34 | DECLARE_PER_CPU(cpumask_t, cpu_core_map); | 35 | DECLARE_PER_CPU(cpumask_t, cpu_core_map); |
35 | DECLARE_PER_CPU(u16, cpu_llc_id); | 36 | DECLARE_PER_CPU(u16, cpu_llc_id); |
36 | DECLARE_PER_CPU(u16, x86_cpu_to_apicid); | 37 | DECLARE_PER_CPU(u16, x86_cpu_to_apicid); |
38 | DECLARE_PER_CPU(u16, x86_bios_cpu_apicid); | ||
37 | 39 | ||
38 | static inline int cpu_present_to_apicid(int mps_cpu) | 40 | static inline int cpu_present_to_apicid(int mps_cpu) |
39 | { | 41 | { |
40 | if (mps_cpu < NR_CPUS) | 42 | if (cpu_present(mps_cpu)) |
41 | return (int)bios_cpu_apicid[mps_cpu]; | 43 | return (int)per_cpu(x86_bios_cpu_apicid, mps_cpu); |
42 | else | 44 | else |
43 | return BAD_APICID; | 45 | return BAD_APICID; |
44 | } | 46 | } |