efi: generalize efi_get_memory_map()
authorRoy Franz <roy.franz@linaro.org>
Sun, 22 Sep 2013 22:45:36 +0000 (15:45 -0700)
committerMatt Fleming <matt.fleming@intel.com>
Wed, 25 Sep 2013 11:34:40 +0000 (12:34 +0100)
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: Roy Franz <roy.franz@linaro.org>
Signed-off-by: Matt Fleming <matt.fleming@intel.com>
drivers/firmware/efi/efi-stub-helper.c

index 561b9cf7745f8559ba6802e18606d7b23eac106f..b314bf720272226088722796ebae0cf66dae708e 100644 (file)
@@ -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,
                                       efi_memory_desc_t **map,
                                       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_status_t status;
@@ -77,6 +79,10 @@ again:
 
        if (status != EFI_SUCCESS)
                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:
        *map = m;
@@ -97,7 +103,8 @@ static efi_status_t efi_high_alloc(efi_system_table_t *sys_table_arg,
        u64 max_addr = 0;
        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)
                goto fail;
 
@@ -183,7 +190,8 @@ static efi_status_t efi_low_alloc(efi_system_table_t *sys_table_arg,
        unsigned long nr_pages;
        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)
                goto fail;