summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Pearson <greg.pearson@hp.com>2012-04-24 18:23:56 -0600
committerIngo Molnar <mingo@kernel.org>2012-04-25 12:47:08 +0200
commitea0dcf903e7d76aa5d483d876215fedcfdfe140f (patch)
treeb2cf96b9507234e9be759f725349cbe730dd63c6
parentd0d3bc65afcdd69bdd3b5bebdf8b3ee3680efa0e (diff)
downloadlinux-3.10-ea0dcf903e7d76aa5d483d876215fedcfdfe140f.tar.gz
linux-3.10-ea0dcf903e7d76aa5d483d876215fedcfdfe140f.tar.bz2
linux-3.10-ea0dcf903e7d76aa5d483d876215fedcfdfe140f.zip
x86/apic: Use x2apic physical mode based on FADT setting
Provide systems that do not support x2apic cluster mode a mechanism to select x2apic physical mode using the FADT FORCE_APIC_PHYSICAL_DESTINATION_MODE bit. Changes from v1: (based on Suresh's comments) - removed #ifdef CONFIG_ACPI - removed #include <linux/acpi.h> Signed-off-by: Greg Pearson <greg.pearson@hp.com> Acked-by: Suresh Siddha <suresh.b.siddha@intel.com> Link: http://lkml.kernel.org/r/1335313436-32020-1-git-send-email-greg.pearson@hp.com Signed-off-by: Ingo Molnar <mingo@kernel.org>
-rw-r--r--arch/x86/kernel/apic/x2apic_phys.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/arch/x86/kernel/apic/x2apic_phys.c b/arch/x86/kernel/apic/x2apic_phys.c
index 8a778db45e3..991e315f422 100644
--- a/arch/x86/kernel/apic/x2apic_phys.c
+++ b/arch/x86/kernel/apic/x2apic_phys.c
@@ -24,6 +24,12 @@ static int x2apic_acpi_madt_oem_check(char *oem_id, char *oem_table_id)
{
if (x2apic_phys)
return x2apic_enabled();
+ else if ((acpi_gbl_FADT.header.revision >= FADT2_REVISION_ID) &&
+ (acpi_gbl_FADT.flags & ACPI_FADT_APIC_PHYSICAL) &&
+ x2apic_enabled()) {
+ printk(KERN_DEBUG "System requires x2apic physical mode\n");
+ return 1;
+ }
else
return 0;
}