Messages in this thread Patch in this message | | | From | Yinghai Lu <> | Subject | [PATCH] x86: save slit | Date | Thu, 10 Jul 2008 20:36:37 -0700 |
| |
in case we are using fixmap to read it. and that fixmap could be clearred by others.
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
--- arch/x86/mm/srat_64.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
Index: linux-2.6/arch/x86/mm/srat_64.c =================================================================== --- linux-2.6.orig/arch/x86/mm/srat_64.c +++ linux-2.6/arch/x86/mm/srat_64.c @@ -100,7 +100,19 @@ static __init inline int srat_disabled(v /* Callback for SLIT parsing */ void __init acpi_numa_slit_init(struct acpi_table_slit *slit) { - acpi_slit = slit; + unsigned length; + unsigned long phys; + + length = slit->header.length; + phys = find_e820_area(0, max_pfn_mapped<<PAGE_SHIFT, length, + PAGE_SIZE); + + if (phys == -1L) + panic(" Can not save slit!\n"); + + acpi_slit = __va(phys); + memcpy(acpi_slit, slit, length); + reserve_early(phys, phys + length, "ACPI SLIT"); } /* Callback for Proximity Domain -> LAPIC mapping */
| |