summaryrefslogtreecommitdiffstats
path: root/arch/x86/mm/srat.c
diff options
context:
space:
mode:
authorYinghai Lu <yinghai@kernel.org>2011-12-21 17:45:16 -0800
committerH. Peter Anvin <hpa@linux.intel.com>2011-12-23 11:00:50 -0800
commita35fd28256e7736cc84af8931a16224f0bfaaf6c (patch)
tree637b536f651b756ce3a83478ef5a42c15b67709f /arch/x86/mm/srat.c
parente8524b2f43ab6747518aef81c709d104c478b1cd (diff)
downloadlinux-a35fd28256e7736cc84af8931a16224f0bfaaf6c.tar.gz
linux-a35fd28256e7736cc84af8931a16224f0bfaaf6c.tar.bz2
linux-a35fd28256e7736cc84af8931a16224f0bfaaf6c.zip
x86, acpi: Skip acpi x2apic entries if the x2apic feature is not present
If the x2apic feature is not present (either the cpu is not capable of it or the user has disabled the feature using boot-parameter etc), ignore the x2apic MADT and SRAT entries provided by the ACPI tables. Signed-off-by: Yinghai Lu <yinghai@kernel.org> Link: http://lkml.kernel.org/r/20111222014632.540896503@sbsiddha-desk.sc.intel.com Signed-off-by: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
Diffstat (limited to 'arch/x86/mm/srat.c')
-rw-r--r--arch/x86/mm/srat.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/x86/mm/srat.c b/arch/x86/mm/srat.c
index 81dbfdeb080d..fd61b3fb7341 100644
--- a/arch/x86/mm/srat.c
+++ b/arch/x86/mm/srat.c
@@ -69,6 +69,12 @@ acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa)
if ((pa->flags & ACPI_SRAT_CPU_ENABLED) == 0)
return;
pxm = pa->proximity_domain;
+ apic_id = pa->apic_id;
+ if (!cpu_has_x2apic && (apic_id >= 0xff)) {
+ printk(KERN_INFO "SRAT: PXM %u -> X2APIC 0x%04x ignored\n",
+ pxm, apic_id);
+ return;
+ }
node = setup_node(pxm);
if (node < 0) {
printk(KERN_ERR "SRAT: Too many proximity domains %x\n", pxm);
@@ -76,7 +82,6 @@ acpi_numa_x2apic_affinity_init(struct acpi_srat_x2apic_cpu_affinity *pa)
return;
}
- apic_id = pa->apic_id;
if (apic_id >= MAX_LOCAL_APIC) {
printk(KERN_INFO "SRAT: PXM %u -> APIC 0x%04x -> Node %u skipped apicid that is too big\n", pxm, apic_id, node);
return;