|
@@ -835,7 +835,7 @@ void __init efi_enter_virtual_mode(void)
|
|
|
efi_memory_desc_t *md, *prev_md = NULL;
|
|
|
efi_status_t status;
|
|
|
unsigned long size;
|
|
|
- u64 end, systab, end_pfn;
|
|
|
+ u64 end, systab, start_pfn, end_pfn;
|
|
|
void *p, *va, *new_memmap = NULL;
|
|
|
int count = 0;
|
|
|
|
|
@@ -888,10 +888,9 @@ void __init efi_enter_virtual_mode(void)
|
|
|
size = md->num_pages << EFI_PAGE_SHIFT;
|
|
|
end = md->phys_addr + size;
|
|
|
|
|
|
+ start_pfn = PFN_DOWN(md->phys_addr);
|
|
|
end_pfn = PFN_UP(end);
|
|
|
- if (end_pfn <= max_low_pfn_mapped
|
|
|
- || (end_pfn > (1UL << (32 - PAGE_SHIFT))
|
|
|
- && end_pfn <= max_pfn_mapped)) {
|
|
|
+ if (pfn_range_is_mapped(start_pfn, end_pfn)) {
|
|
|
va = __va(md->phys_addr);
|
|
|
|
|
|
if (!(md->attribute & EFI_MEMORY_WB))
|