Thread (34 messages) 34 messages, 5 authors, 2013-08-13

[PATCH 12/17] Add proper definitions for some EFI function pointers.

From: Roy Franz <hidden>
Date: 2013-08-09 14:13:04
Also in: linux-efi, lkml

Thanks Mark - I'll get that in the next version of the patches.

On Fri, Aug 9, 2013 at 7:10 AM, Mark Salter [off-list ref] wrote:
On Tue, 2013-08-06 at 20:45 -0700, Roy Franz wrote:
quoted
The x86/AMD64 EFI stubs must us a call wrapper to convert between
the Linux and EFI ABIs, so void pointers are sufficient.  For ARM,
the ABIs are compatible, so we can directly invoke the function
pointers.  The functions that are used by the ARM stub are updated
to match the EFI definitions.

Signed-off-by: Roy Franz <redacted>
---
 include/linux/efi.h |   42 +++++++++++++++++++++++++-----------------
 1 file changed, 25 insertions(+), 17 deletions(-)
diff --git a/include/linux/efi.h b/include/linux/efi.h
index 51f5641..96bb866 100644
--- a/include/linux/efi.h
+++ b/include/linux/efi.h
@@ -39,6 +39,8 @@
 typedef unsigned long efi_status_t;
 typedef u8 efi_bool_t;
 typedef u16 efi_char16_t;            /* UNICODE character */
+typedef u64 efi_physical_addr_t;
+typedef void *efi_handle_t;


 typedef struct {
@@ -96,6 +98,7 @@ typedef     struct {
 #define EFI_MEMORY_DESCRIPTOR_VERSION        1

 #define EFI_PAGE_SHIFT               12
+#define EFI_PAGE_SIZE                (1UL << EFI_PAGE_SHIFT)

 typedef struct {
      u32 type;
@@ -157,11 +160,12 @@ typedef struct {
      efi_table_hdr_t hdr;
      void *raise_tpl;
      void *restore_tpl;
-     void *allocate_pages;
-     void *free_pages;
-     void *get_memory_map;
-     void *allocate_pool;
-     void *free_pool;
+     int (*allocate_pages)(int, int, unsigned long, efi_physical_addr_t *);
+     int (*free_pages)(efi_physical_addr_t, unsigned long);
All of the actual function pointers that were added should return an
efi_status_t instead of int. On arm64, I was seeing an unrecognizable
error status because the truncation from 64 to 32 bits.

--Mark
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help