x86: reserve SLIT
save the SLIT, in case we are using fixmap to read it, and that fixmap could be cleared by others. Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Cc: Suresh Siddha <suresh.b.siddha@intel.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
@@ -100,7 +100,19 @@ static __init inline int srat_disabled(void)
|
|||||||
/* Callback for SLIT parsing */
|
/* Callback for SLIT parsing */
|
||||||
void __init acpi_numa_slit_init(struct acpi_table_slit *slit)
|
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 */
|
/* Callback for Proximity Domain -> LAPIC mapping */
|
||||||
|
Reference in New Issue
Block a user