diff options
author | Glauber de Oliveira Costa <gcosta@redhat.com> | 2008-03-19 13:26:05 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-04-17 11:41:04 -0400 |
commit | 7cefaa20e798c547f569ca3f79547f820c802997 (patch) | |
tree | 7c2dfdf40a1392ba775132a0ac4caad4ccabb61c /arch/x86 | |
parent | e7bc8fbad4c582639334285dd1d9571578c58674 (diff) |
x86: additions to i386 native_smp_prepare_cpus.
Add function calls to native_smp_prepare_cpus in i386
to match x86_64
Signed-off-by: Glauber Costa <gcosta@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86')
-rw-r--r-- | arch/x86/kernel/smpboot_32.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/arch/x86/kernel/smpboot_32.c b/arch/x86/kernel/smpboot_32.c index d153d8423740..6be36d3eea4e 100644 --- a/arch/x86/kernel/smpboot_32.c +++ b/arch/x86/kernel/smpboot_32.c | |||
@@ -172,11 +172,23 @@ static int __init smp_sanity_check(unsigned max_cpus) | |||
172 | return 0; | 172 | return 0; |
173 | } | 173 | } |
174 | 174 | ||
175 | /* These are wrappers to interface to the new boot process. Someone | 175 | static void __init smp_cpu_index_default(void) |
176 | who understands all this stuff should rewrite it properly. --RR 15/Jul/02 */ | 176 | { |
177 | int i; | ||
178 | struct cpuinfo_x86 *c; | ||
179 | |||
180 | for_each_cpu_mask(i, cpu_possible_map) { | ||
181 | c = &cpu_data(i); | ||
182 | /* mark all to hotplug */ | ||
183 | c->cpu_index = NR_CPUS; | ||
184 | } | ||
185 | } | ||
186 | |||
177 | void __init native_smp_prepare_cpus(unsigned int max_cpus) | 187 | void __init native_smp_prepare_cpus(unsigned int max_cpus) |
178 | { | 188 | { |
179 | nmi_watchdog_default(); | 189 | nmi_watchdog_default(); |
190 | smp_cpu_index_default(); | ||
191 | current_cpu_data = boot_cpu_data; | ||
180 | cpu_callin_map = cpumask_of_cpu(0); | 192 | cpu_callin_map = cpumask_of_cpu(0); |
181 | mb(); | 193 | mb(); |
182 | 194 | ||
@@ -195,7 +207,11 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus) | |||
195 | return; | 207 | return; |
196 | } | 208 | } |
197 | 209 | ||
198 | boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID)); | 210 | if (GET_APIC_ID(apic_read(APIC_ID)) != boot_cpu_physical_apicid) { |
211 | panic("Boot APIC ID in local APIC unexpected (%d vs %d)", | ||
212 | GET_APIC_ID(apic_read(APIC_ID)), boot_cpu_physical_apicid); | ||
213 | /* Or can we switch back to PIC here? */ | ||
214 | } | ||
199 | 215 | ||
200 | connect_bsp_APIC(); | 216 | connect_bsp_APIC(); |
201 | setup_local_APIC(); | 217 | setup_local_APIC(); |