diff options
author | Suresh Siddha <suresh.b.siddha@intel.com> | 2011-05-19 16:45:46 -0700 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2011-05-20 13:41:04 +0200 |
commit | 9ebd680bd029a9fc47399ca61c950f8b6730ac40 (patch) | |
tree | 41b5c8ae4a13b51536ead20f6e4b4b380748072a /arch/x86/kernel/apic/probe_64.c | |
parent | 8f18c9711ed31c257d4f00a094b2fdbe72a741da (diff) | |
download | op-kernel-dev-9ebd680bd029a9fc47399ca61c950f8b6730ac40.zip op-kernel-dev-9ebd680bd029a9fc47399ca61c950f8b6730ac40.tar.gz |
x86, apic: Use probe routines to simplify apic selection
Use the unused probe routine in the apic driver to finalize the
apic model selection. This cleans up the
default_setup_apic_routing() and this probe routine in future
can also be used for doing any apic model specific
initialisation.
Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com>
Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>
Cc: steiner@sgi.com
Cc: yinghai@kernel.org
Link: http://lkml.kernel.org/r/20110519234637.247458931@sbsiddha-MOBL3.sc.intel.com
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/apic/probe_64.c')
-rw-r--r-- | arch/x86/kernel/apic/probe_64.c | 22 |
1 files changed, 7 insertions, 15 deletions
diff --git a/arch/x86/kernel/apic/probe_64.c b/arch/x86/kernel/apic/probe_64.c index d8c4a6f..39fb42b 100644 --- a/arch/x86/kernel/apic/probe_64.c +++ b/arch/x86/kernel/apic/probe_64.c @@ -54,26 +54,18 @@ static int apicid_phys_pkg_id(int initial_apic_id, int index_msb) */ void __init default_setup_apic_routing(void) { + int i; enable_IR_x2apic(); -#ifdef CONFIG_X86_X2APIC - if (x2apic_mode -#ifdef CONFIG_X86_UV - && apic != &apic_x2apic_uv_x -#endif - ) { - if (x2apic_phys) - apic = &apic_x2apic_phys; - else - apic = &apic_x2apic_cluster; + for (i = 0; apic_probe[i]; ++i) { + if (apic_probe[i]->probe()) { + apic = apic_probe[i]; + break; + } } -#endif - - if (apic == &apic_flat && num_possible_cpus() > 8) - apic = &apic_physflat; - printk(KERN_INFO "Setting APIC routing to %s\n", apic->name); + printk(KERN_INFO "APIC routing finalized to %s.\n", apic->name); if (is_vsmp_box()) { /* need to update phys_pkg_id */ |