summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic/probe_64.c
diff options
context:
space:
mode:
authorSuresh Siddha <suresh.b.siddha@intel.com>2010-01-18 12:10:49 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2010-01-18 14:15:28 -0800
commitbb668da6d6f2bec8a63838c098d9515eccb22cc4 (patch)
treed41b25f7f9a8dcfcfeea13be8035799f3e154216 /arch/x86/kernel/apic/probe_64.c
parentdfea91d5a7c795fd6f4e1a97489a98e4e767463e (diff)
downloadop-kernel-dev-bb668da6d6f2bec8a63838c098d9515eccb22cc4.zip
op-kernel-dev-bb668da6d6f2bec8a63838c098d9515eccb22cc4.tar.gz
x86, apic: use logical flat for systems with <= 8 logical cpus
We can use logical flat mode if there are <= 8 logical cpu's (irrespective of physical apic id values). This will enable simplified and efficient IPI and device interrupt routing on such platforms. This has been tested to work on both Intel and AMD platforms. Exceptions like IBM summit platform which can't use logical flat mode are addressed by using OEM platform checks. Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: Yinghai Lu <yinghai@kernel.org> Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com> Cc: Chris McDermott <lcm@linux.vnet.ibm.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'arch/x86/kernel/apic/probe_64.c')
-rw-r--r--arch/x86/kernel/apic/probe_64.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/arch/x86/kernel/apic/probe_64.c b/arch/x86/kernel/apic/probe_64.c
index 65edc18..450fe20 100644
--- a/arch/x86/kernel/apic/probe_64.c
+++ b/arch/x86/kernel/apic/probe_64.c
@@ -64,15 +64,13 @@ void __init default_setup_apic_routing(void)
apic = &apic_x2apic_phys;
else
apic = &apic_x2apic_cluster;
- printk(KERN_INFO "Setting APIC routing to %s\n", apic->name);
}
#endif
- if (apic == &apic_flat) {
- if (max_physical_apicid >= 8)
+ if (apic == &apic_flat && num_processors > 8)
apic = &apic_physflat;
- printk(KERN_INFO "Setting APIC routing to %s\n", apic->name);
- }
+
+ printk(KERN_INFO "Setting APIC routing to %s\n", apic->name);
if (is_vsmp_box()) {
/* need to update phys_pkg_id */
OpenPOWER on IntegriCloud