mirror of https://gitee.com/openkylin/linux.git
x86, x2apic: Simplify apic init in SMP and UP builds
Move enable_IR_x2apic() inside the default_setup_apic_routing(), and for SMP platforms, move the default_setup_apic_routing() after smp_sanity_check(). This cleans up the code that tries to avoid multiple calls to default_setup_apic_routing() when smp_sanity_check() fails (which goes through the APIC_init_uniprocessor() path). Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> LKML-Reference: <20100827181049.173087246@sbsiddha-MOBL3.sc.intel.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
This commit is contained in:
parent
62a92f4c69
commit
fa47f7e528
|
@ -1665,10 +1665,7 @@ int __init APIC_init_uniprocessor(void)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef CONFIG_SMP
|
|
||||||
enable_IR_x2apic();
|
|
||||||
default_setup_apic_routing();
|
default_setup_apic_routing();
|
||||||
#endif
|
|
||||||
|
|
||||||
verify_local_APIC();
|
verify_local_APIC();
|
||||||
connect_bsp_APIC();
|
connect_bsp_APIC();
|
||||||
|
|
|
@ -54,6 +54,9 @@ static int apicid_phys_pkg_id(int initial_apic_id, int index_msb)
|
||||||
*/
|
*/
|
||||||
void __init default_setup_apic_routing(void)
|
void __init default_setup_apic_routing(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
enable_IR_x2apic();
|
||||||
|
|
||||||
#ifdef CONFIG_X86_X2APIC
|
#ifdef CONFIG_X86_X2APIC
|
||||||
if (x2apic_mode
|
if (x2apic_mode
|
||||||
#ifdef CONFIG_X86_UV
|
#ifdef CONFIG_X86_UV
|
||||||
|
|
|
@ -1109,8 +1109,6 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
|
||||||
}
|
}
|
||||||
set_cpu_sibling_map(0);
|
set_cpu_sibling_map(0);
|
||||||
|
|
||||||
enable_IR_x2apic();
|
|
||||||
default_setup_apic_routing();
|
|
||||||
|
|
||||||
if (smp_sanity_check(max_cpus) < 0) {
|
if (smp_sanity_check(max_cpus) < 0) {
|
||||||
printk(KERN_INFO "SMP disabled\n");
|
printk(KERN_INFO "SMP disabled\n");
|
||||||
|
@ -1118,6 +1116,8 @@ void __init native_smp_prepare_cpus(unsigned int max_cpus)
|
||||||
goto out;
|
goto out;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default_setup_apic_routing();
|
||||||
|
|
||||||
preempt_disable();
|
preempt_disable();
|
||||||
if (read_apic_id() != boot_cpu_physical_apicid) {
|
if (read_apic_id() != boot_cpu_physical_apicid) {
|
||||||
panic("Boot APIC ID in local APIC unexpected (%d vs %d)",
|
panic("Boot APIC ID in local APIC unexpected (%d vs %d)",
|
||||||
|
|
Loading…
Reference in New Issue