# HG changeset patch # User Keir Fraser # Date 1267131806 0 # Node ID 94535cc638355c1981c10626f720df97f7c99f55 # Parent 5db0a9bd6a500233194283206ee1cbd8cc52f47d x86 numa: Fix post-boot ACPI SLIT accesses. Signed-off-by: Nitin A Kamble diff -r 5db0a9bd6a50 -r 94535cc63835 xen/arch/x86/srat.c --- a/xen/arch/x86/srat.c Thu Feb 25 21:00:54 2010 +0000 +++ b/xen/arch/x86/srat.c Thu Feb 25 21:03:26 2010 +0000 @@ -140,11 +140,22 @@ static __init int slit_valid(struct acpi /* 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; } - acpi_slit = slit; + 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 = mfn_to_virt(mfn); + memcpy(acpi_slit, slit, slit->header.length); +#endif } /* Callback for Proximity Domain -> LAPIC mapping */