diff options
author | Ard Biesheuvel <ardb@kernel.org> | 2022-09-15 19:45:35 +0200 |
---|---|---|
committer | Ard Biesheuvel <ardb@kernel.org> | 2022-09-26 22:29:24 +0200 |
commit | f80d26043af91ceb5036c478101c015edb9e7630 (patch) | |
tree | 00514d5a2f28a3d7ae7d4f82b978ae4ae961c559 /drivers/firmware/efi/libstub/efistub.h | |
parent | d80ca810f096ff66f451e7a3ed2f0cd9ef1ff519 (diff) |
efi: libstub: avoid efi_get_memory_map() for allocating the virt map
The virt map is a set of efi_memory_desc_t descriptors that are passed
to SetVirtualAddressMap() to inform the firmware about the desired
virtual mapping of the regions marked as EFI_MEMORY_RUNTIME. The only
reason we currently call the efi_get_memory_map() helper is that it
gives us an allocation that is guaranteed to be of sufficient size.
However, efi_get_memory_map() has grown some additional complexity over
the years, and today, we're actually better off calling the EFI boot
service directly with a zero size, which tells us how much memory should
be enough for the virt map.
While at it, avoid creating the VA map allocation if we will not be
using it anyway, i.e., if efi_novamap is true.
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Diffstat (limited to 'drivers/firmware/efi/libstub/efistub.h')
-rw-r--r-- | drivers/firmware/efi/libstub/efistub.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/firmware/efi/libstub/efistub.h b/drivers/firmware/efi/libstub/efistub.h index b0ae0a454404..e9d466822b67 100644 --- a/drivers/firmware/efi/libstub/efistub.h +++ b/drivers/firmware/efi/libstub/efistub.h @@ -864,6 +864,8 @@ efi_status_t allocate_new_fdt_and_exit_boot(void *handle, void *get_fdt(unsigned long *fdt_size); +efi_status_t efi_alloc_virtmap(efi_memory_desc_t **virtmap, + unsigned long *desc_size, u32 *desc_ver); void efi_get_virtmap(efi_memory_desc_t *memory_map, unsigned long map_size, unsigned long desc_size, efi_memory_desc_t *runtime_map, int *count); |