|
@@ -159,6 +159,7 @@ static __init int is_usable_memory(efi_memory_desc_t *md)
|
|
switch (md->type) {
|
|
switch (md->type) {
|
|
case EFI_LOADER_CODE:
|
|
case EFI_LOADER_CODE:
|
|
case EFI_LOADER_DATA:
|
|
case EFI_LOADER_DATA:
|
|
|
|
+ case EFI_ACPI_RECLAIM_MEMORY:
|
|
case EFI_BOOT_SERVICES_CODE:
|
|
case EFI_BOOT_SERVICES_CODE:
|
|
case EFI_BOOT_SERVICES_DATA:
|
|
case EFI_BOOT_SERVICES_DATA:
|
|
case EFI_CONVENTIONAL_MEMORY:
|
|
case EFI_CONVENTIONAL_MEMORY:
|
|
@@ -211,6 +212,10 @@ static __init void reserve_regions(void)
|
|
|
|
|
|
if (!is_usable_memory(md))
|
|
if (!is_usable_memory(md))
|
|
memblock_mark_nomap(paddr, size);
|
|
memblock_mark_nomap(paddr, size);
|
|
|
|
+
|
|
|
|
+ /* keep ACPI reclaim memory intact for kexec etc. */
|
|
|
|
+ if (md->type == EFI_ACPI_RECLAIM_MEMORY)
|
|
|
|
+ memblock_reserve(paddr, size);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|