Commit 1c089c65 authored by Roy Franz's avatar Roy Franz Committed by Matt Fleming

efi: generalize efi_get_memory_map()

Add arguments for returning the descriptor version and also
the memory map key.  The key is required for calling
exit_boot_services().
Signed-off-by: default avatarRoy Franz <roy.franz@linaro.org>
Signed-off-by: default avatarMatt Fleming <matt.fleming@intel.com>
parent 86cc653b
...@@ -49,7 +49,9 @@ static void efi_printk(efi_system_table_t *sys_table_arg, char *str) ...@@ -49,7 +49,9 @@ static void efi_printk(efi_system_table_t *sys_table_arg, char *str)
static efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, static efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg,
efi_memory_desc_t **map, efi_memory_desc_t **map,
unsigned long *map_size, unsigned long *map_size,
unsigned long *desc_size) unsigned long *desc_size,
u32 *desc_ver,
unsigned long *key_ptr)
{ {
efi_memory_desc_t *m = NULL; efi_memory_desc_t *m = NULL;
efi_status_t status; efi_status_t status;
...@@ -77,6 +79,10 @@ static efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg, ...@@ -77,6 +79,10 @@ static efi_status_t efi_get_memory_map(efi_system_table_t *sys_table_arg,
if (status != EFI_SUCCESS) if (status != EFI_SUCCESS)
efi_call_phys1(sys_table_arg->boottime->free_pool, m); efi_call_phys1(sys_table_arg->boottime->free_pool, m);
if (key_ptr && status == EFI_SUCCESS)
*key_ptr = key;
if (desc_ver && status == EFI_SUCCESS)
*desc_ver = desc_version;
fail: fail:
*map = m; *map = m;
...@@ -97,7 +103,8 @@ static efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg, ...@@ -97,7 +103,8 @@ static efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg,
u64 max_addr = 0; u64 max_addr = 0;
int i; int i;
status = efi_get_memory_map(sys_table_arg, &map, &map_size, &desc_size); status = efi_get_memory_map(sys_table_arg, &map, &map_size, &desc_size,
NULL, NULL);
if (status != EFI_SUCCESS) if (status != EFI_SUCCESS)
goto fail; goto fail;
...@@ -183,7 +190,8 @@ static efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg, ...@@ -183,7 +190,8 @@ static efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg,
unsigned long nr_pages; unsigned long nr_pages;
int i; int i;
status = efi_get_memory_map(sys_table_arg, &map, &map_size, &desc_size); status = efi_get_memory_map(sys_table_arg, &map, &map_size, &desc_size,
NULL, NULL);
if (status != EFI_SUCCESS) if (status != EFI_SUCCESS)
goto fail; goto fail;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment