[PATCH 11/17] generalize efi_get_memory_map()

2013-09-16 Thread Roy Franz
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 
---
 drivers/firmware/efi/efi-stub-helper.c |   14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/firmware/efi/efi-stub-helper.c 
b/drivers/firmware/efi/efi-stub-helper.c
index 7c158cb..ca1592b 100644
--- a/drivers/firmware/efi/efi-stub-helper.c
+++ b/drivers/firmware/efi/efi-stub-helper.c
@@ -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, , _size, _size);
+   status = efi_get_memory_map(sys_table_arg, , _size, _size,
+   NULL, NULL);
if (status != EFI_SUCCESS)
goto fail;
 
@@ -182,7 +189,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, , _size, _size);
+   status = efi_get_memory_map(sys_table_arg, , _size, _size,
+   NULL, NULL);
if (status != EFI_SUCCESS)
goto fail;
 
-- 
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[PATCH 11/17] generalize efi_get_memory_map()

2013-09-16 Thread Roy Franz
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.fr...@linaro.org
---
 drivers/firmware/efi/efi-stub-helper.c |   14 +++---
 1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/firmware/efi/efi-stub-helper.c 
b/drivers/firmware/efi/efi-stub-helper.c
index 7c158cb..ca1592b 100644
--- a/drivers/firmware/efi/efi-stub-helper.c
+++ b/drivers/firmware/efi/efi-stub-helper.c
@@ -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;
 
@@ -182,7 +189,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;
 
-- 
1.7.10.4

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/