On Tue, 2013-08-06 at 20:45 -0700, Roy Franz wrote: > 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 <roy.franz@xxxxxxxxxx> > --- > 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 -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html