Commit 4780b261 authored by Glauber de Oliveira Costa's avatar Glauber de Oliveira Costa Committed by Ingo Molnar

x86: isolate sanity checking

Isolate all sanity checking in a smp_sanity_check()
function as x86_64 does.
Signed-off-by: default avatarGlauber Costa <gcosta@redhat.com>
Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
parent fa8004d8
...@@ -735,10 +735,6 @@ static int __cpuinit __smp_prepare_cpu(int cpu) ...@@ -735,10 +735,6 @@ static int __cpuinit __smp_prepare_cpu(int cpu)
} }
#endif #endif
/*
* Cycle through the processors sending APIC IPIs to boot each.
*/
static int boot_cpu_logical_apicid; static int boot_cpu_logical_apicid;
/* Where the IO area was mapped on multiquad, always 0 otherwise */ /* Where the IO area was mapped on multiquad, always 0 otherwise */
void *xquad_portio; void *xquad_portio;
...@@ -746,26 +742,8 @@ void *xquad_portio; ...@@ -746,26 +742,8 @@ void *xquad_portio;
EXPORT_SYMBOL(xquad_portio); EXPORT_SYMBOL(xquad_portio);
#endif #endif
static void __init smp_boot_cpus(unsigned int max_cpus) static int __init smp_sanity_check(unsigned max_cpus)
{ {
int apicid, cpu, bit, kicked;
unsigned long bogosum = 0;
/*
* Setup boot CPU information
*/
smp_store_cpu_info(0); /* Final full version of the data */
printk("CPU%d: ", 0);
print_cpu_info(&cpu_data(0));
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
boot_cpu_logical_apicid = logical_smp_processor_id();
per_cpu(x86_cpu_to_apicid, 0) = boot_cpu_physical_apicid;
current_thread_info()->cpu = 0;
set_cpu_sibling_map(0);
/* /*
* If we couldn't find an SMP configuration at boot time, * If we couldn't find an SMP configuration at boot time,
* get out of here now! * get out of here now!
...@@ -780,7 +758,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus) ...@@ -780,7 +758,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
map_cpu_to_logical_apicid(); map_cpu_to_logical_apicid();
cpu_set(0, per_cpu(cpu_sibling_map, 0)); cpu_set(0, per_cpu(cpu_sibling_map, 0));
cpu_set(0, per_cpu(cpu_core_map, 0)); cpu_set(0, per_cpu(cpu_core_map, 0));
return; return -1;
} }
/* /*
...@@ -806,7 +784,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus) ...@@ -806,7 +784,7 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
map_cpu_to_logical_apicid(); map_cpu_to_logical_apicid();
cpu_set(0, per_cpu(cpu_sibling_map, 0)); cpu_set(0, per_cpu(cpu_sibling_map, 0));
cpu_set(0, per_cpu(cpu_core_map, 0)); cpu_set(0, per_cpu(cpu_core_map, 0));
return; return -1;
} }
verify_local_APIC(); verify_local_APIC();
...@@ -828,9 +806,36 @@ static void __init smp_boot_cpus(unsigned int max_cpus) ...@@ -828,9 +806,36 @@ static void __init smp_boot_cpus(unsigned int max_cpus)
map_cpu_to_logical_apicid(); map_cpu_to_logical_apicid();
cpu_set(0, per_cpu(cpu_sibling_map, 0)); cpu_set(0, per_cpu(cpu_sibling_map, 0));
cpu_set(0, per_cpu(cpu_core_map, 0)); cpu_set(0, per_cpu(cpu_core_map, 0));
return; return -1;
} }
return 0;
}
/*
* Cycle through the processors sending APIC IPIs to boot each.
*/
static void __init smp_boot_cpus(unsigned int max_cpus)
{
int apicid, cpu, bit, kicked;
unsigned long bogosum = 0;
/*
* Setup boot CPU information
*/
smp_store_cpu_info(0); /* Final full version of the data */
printk(KERN_INFO "CPU%d: ", 0);
print_cpu_info(&cpu_data(0));
boot_cpu_physical_apicid = GET_APIC_ID(apic_read(APIC_ID));
boot_cpu_logical_apicid = logical_smp_processor_id();
per_cpu(x86_cpu_to_apicid, 0) = boot_cpu_physical_apicid;
current_thread_info()->cpu = 0;
set_cpu_sibling_map(0);
smp_sanity_check(max_cpus);
connect_bsp_APIC(); connect_bsp_APIC();
setup_local_APIC(); setup_local_APIC();
map_cpu_to_logical_apicid(); map_cpu_to_logical_apicid();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment