]> Pileus Git - ~andy/linux/blobdiff - arch/x86/mm/srat.c
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux
[~andy/linux] / arch / x86 / mm / srat.c
index 7efd0c615d58d9189c723fdde0e52838a320a6a3..1c1c4f46a7c15c19c54923c815556d8c253b847c 100644 (file)
@@ -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;