summaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel/apic/apic.c
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2010-01-25 14:52:48 +0000
committerMark Brown <broonie@opensource.wolfsonmicro.com>2010-01-25 14:52:48 +0000
commitf1487fcbe47cd2bc0c71e8598bf9eb6a82dec544 (patch)
tree4c7abed6047538c13dd024a8ecffd15f31b4609a /arch/x86/kernel/apic/apic.c
parent84549d239ab9bb2e3a85c6efcf0e6478a38b4260 (diff)
parent40aa7030e5213a43e9e0554fd7f95534ea310bf3 (diff)
downloadkernel-crypto-f1487fcbe47cd2bc0c71e8598bf9eb6a82dec544.tar.gz
kernel-crypto-f1487fcbe47cd2bc0c71e8598bf9eb6a82dec544.tar.xz
kernel-crypto-f1487fcbe47cd2bc0c71e8598bf9eb6a82dec544.zip
Merge branch 'for-2.6.33' into for-2.6.34
Diffstat (limited to 'arch/x86/kernel/apic/apic.c')
-rw-r--r--arch/x86/kernel/apic/apic.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
index aa57c079c98..3987e4408f7 100644
--- a/arch/x86/kernel/apic/apic.c
+++ b/arch/x86/kernel/apic/apic.c
@@ -61,12 +61,6 @@ unsigned int boot_cpu_physical_apicid = -1U;
/*
* The highest APIC ID seen during enumeration.
- *
- * On AMD, 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,17 @@ void __cpuinit generic_processor_info(int apicid, int version)
max_physical_apicid = apicid;
#ifdef CONFIG_X86_32
- switch (boot_cpu_data.x86_vendor) {
- case X86_VENDOR_INTEL:
- if (num_processors > 8)
- def_to_bigsmp = 1;
- break;
- case X86_VENDOR_AMD:
- if (max_physical_apicid >= 8)
+ if (num_processors > 8) {
+ switch (boot_cpu_data.x86_vendor) {
+ case X86_VENDOR_INTEL:
+ if (!APIC_XAPIC(version)) {
+ def_to_bigsmp = 0;
+ break;
+ }
+ /* If P4 and above fall through */
+ case X86_VENDOR_AMD:
def_to_bigsmp = 1;
+ }
}
#endif