x86: isolate sanity checking
Isolate all sanity checking in a smp_sanity_check() function as x86_64 does. Signed-off-by: Glauber Costa <gcosta@redhat.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
committed by
Ingo Molnar
parent
fa8004d8e0
commit
4780b261e2
@@ -735,10 +735,6 @@ exit:
|
|||||||
}
|
}
|
||||||
#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;
|
|||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
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();
|
||||||
|
Reference in New Issue
Block a user