]> xenbits.xensource.com Git - xen.git/commitdiff
x86 numa: Fix post-boot ACPI SLIT accesses.
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 25 Feb 2010 21:03:26 +0000 (21:03 +0000)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 25 Feb 2010 21:03:26 +0000 (21:03 +0000)
Signed-off-by: Nitin A Kamble <nitin.a.kamble@intel.com>
xen/arch/x86/srat.c

index 9da11f7b0ece3add3884f38a8c84ac28c3bb0bd5..2060ff78ccf1332f4a19efecfd93df255a5f5be3 100644 (file)
@@ -140,11 +140,22 @@ static __init int slit_valid(struct acpi_table_slit *slit)
 /* Callback for SLIT parsing */
 void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
 {
+#ifdef CONFIG_X86_64
+       unsigned long mfn;
        if (!slit_valid(slit)) {
-               printk(KERN_INFO "ACPI: SLIT table looks invalid. Not used.\n");
+               printk(KERN_INFO "ACPI: SLIT table looks invalid. "
+                      "Not used.\n");
+               return;
+       }
+       mfn = alloc_boot_pages(PFN_UP(slit->header.length), 1);
+       if (!mfn) {
+               printk(KERN_ERR "ACPI: Unable to allocate memory for "
+                      "saving ACPI SLIT numa information.\n");
                return;
        }
-       acpi_slit = slit;
+       acpi_slit = mfn_to_virt(mfn);
+       memcpy(acpi_slit, slit, slit->header.length);
+#endif
 }
 
 /* Callback for Proximity Domain -> LAPIC mapping */