Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 245661
b: refs/heads/master
c: 7cb00b7
h: refs/heads/master
i:
  245659: 07e17a9
v: v3
  • Loading branch information
Matthew Garrett authored and H. Peter Anvin committed May 9, 2011
1 parent a405790 commit 682c5fc
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 4 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 202f9d0a41809e3424af5f61489b48b622824aed
refs/heads/master: 7cb00b72876ea2451eb79d468da0e8fb9134aa8a
14 changes: 11 additions & 3 deletions trunk/arch/x86/platform/efi/efi.c
Original file line number Diff line number Diff line change
Expand Up @@ -502,7 +502,8 @@ void __init efi_enter_virtual_mode(void)
efi_status_t status;
unsigned long size;
u64 end, systab, addr, npages, end_pfn;
void *p, *va;
void *p, *va, *new_memmap = NULL;
int count = 0;

efi.systab = NULL;

Expand Down Expand Up @@ -569,15 +570,21 @@ void __init efi_enter_virtual_mode(void)
systab += md->virt_addr - md->phys_addr;
efi.systab = (efi_system_table_t *) (unsigned long) systab;
}
new_memmap = krealloc(new_memmap,
(count + 1) * memmap.desc_size,
GFP_KERNEL);
memcpy(new_memmap + (count * memmap.desc_size), md,
memmap.desc_size);
count++;
}

BUG_ON(!efi.systab);

status = phys_efi_set_virtual_address_map(
memmap.desc_size * memmap.nr_map,
memmap.desc_size * count,
memmap.desc_size,
memmap.desc_version,
memmap.phys_map);
(efi_memory_desc_t *)__pa(new_memmap));

if (status != EFI_SUCCESS) {
printk(KERN_ALERT "Unable to switch EFI into virtual mode "
Expand Down Expand Up @@ -605,6 +612,7 @@ void __init efi_enter_virtual_mode(void)
runtime_code_page_mkexec();
early_iounmap(memmap.map, memmap.nr_map * memmap.desc_size);
memmap.map = NULL;
kfree(new_memmap);
}

/*
Expand Down

0 comments on commit 682c5fc

Please sign in to comment.