mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Suresh Siddha <suresh.b.siddha@intel.com>
To: torvalds@linux-foundation.org, hpa@zytor.com, mingo@elte.hu,
	tglx@linutronix.de
Cc: linux-kernel@vger.kernel.org,
	Suresh Siddha <suresh.b.siddha@intel.com>,
	Yinghai Lu <yinghai@kernel.org>,
	Ananth N Mavinakayanahalli <ananth@in.ibm.com>,
	Chris McDermott <lcm@linux.vnet.ibm.com>
Subject: [patch 2/2] x86, apic: use logical flat for systems with <= 8 logical cpus
Date: Mon, 18 Jan 2010 12:10:49 -0800	[thread overview]
Message-ID: <20100118201256.672679042@sbs-t61.sc.intel.com> (raw)
In-Reply-To: <20100118201256.604267529@sbs-t61.sc.intel.com>

[-- Attachment #1: use_flat_mode_for_upto_8_logical_cpus.patch --]
[-- Type: text/plain, Size: 2668 bytes --]

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>
---
 arch/x86/kernel/apic/apic.c     |   15 +--------------
 arch/x86/kernel/apic/probe_64.c |    8 +++-----
 2 files changed, 4 insertions(+), 19 deletions(-)

Index: tip/arch/x86/kernel/apic/apic.c
===================================================================
--- tip.orig/arch/x86/kernel/apic/apic.c
+++ tip/arch/x86/kernel/apic/apic.c
@@ -61,12 +61,6 @@ unsigned int boot_cpu_physical_apicid = 
 
 /*
  * The highest APIC ID seen during enumeration.
- *
- * This determines the messaging protocol we can use: if all APIC IDs
- * are in the 0 ... 7 range, then we can use logical addressing which
- * has some performance advantages (better broadcasting).
- *
- * If there's an APIC ID above 8, we use physical addressing.
  */
 unsigned int max_physical_apicid;
 
@@ -1898,14 +1892,7 @@ void __cpuinit generic_processor_info(in
 		max_physical_apicid = apicid;
 
 #ifdef CONFIG_X86_32
-	/*
-	 * Would be preferable to switch to bigsmp when CONFIG_HOTPLUG_CPU=y
-	 * but we need to work other dependencies like SMP_SUSPEND etc
-	 * before this can be done without some confusion.
-	 * if (CPU_HOTPLUG_ENABLED || num_processors > 8)
-	 *       - Ashok Raj <ashok.raj@intel.com>
-	 */
-	if (max_physical_apicid >= 8) {
+	if (num_processors > 8) {
 		switch (boot_cpu_data.x86_vendor) {
 		case X86_VENDOR_INTEL:
 			if (!APIC_XAPIC(version)) {
Index: tip/arch/x86/kernel/apic/probe_64.c
===================================================================
--- tip.orig/arch/x86/kernel/apic/probe_64.c
+++ tip/arch/x86/kernel/apic/probe_64.c
@@ -64,15 +64,13 @@ void __init default_setup_apic_routing(v
 			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 */



  reply	other threads:[~2010-01-18 20:26 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-18 20:10 [patch 1/2] x86, apic: use physical mode for IBM summit platforms Suresh Siddha
2010-01-18 20:10 ` Suresh Siddha [this message]
2010-02-09 18:00   ` [tip:x86/urgent] x86, apic: Don't use logical-flat mode when CPU hotplug may exceed 8 CPUs tip-bot for Suresh Siddha
2010-02-09 18:47     ` Yinghai Lu
2010-02-10  2:01       ` Suresh Siddha
2010-02-10  2:26         ` Yinghai Lu
2010-02-10  3:00           ` Yinghai Lu
2010-02-10  3:03             ` H. Peter Anvin
2010-02-10  3:04               ` Yinghai Lu
2010-02-10  3:42         ` Yinghai Lu
2010-02-10  6:27         ` tip-bot for Suresh Siddha

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100118201256.672679042@sbs-t61.sc.intel.com \
    --to=suresh.b.siddha@intel.com \
    --cc=ananth@in.ibm.com \
    --cc=hpa@zytor.com \
    --cc=lcm@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    --cc=torvalds@linux-foundation.org \
    --cc=yinghai@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

Powered by JetHome