[U-Boot] [PATCH] efi_loader: provide efi_mem_desc version

Provide version of struct efi_mem_desc in efi_get_memory_map().
EFI_BOOT_SERVICES.GetMemoryMap() in UEFI specification v2.6 defines memory descriptor version to 1. Linux kernel also expects descriptor version to be 1 and prints following warning during boot if its not:
Unexpected EFI_MEMORY_DESCRIPTOR version 0
Signed-off-by: Mian Yousaf Kaukab yousaf.kaukab@gmail.com --- Resending the patch as previous attempt was blocked for some reason.
include/efi.h | 2 ++ lib/efi_loader/efi_memory.c | 3 +++ 2 files changed, 5 insertions(+)
diff --git a/include/efi.h b/include/efi.h index 83de2d4..5a3b8cf 100644 --- a/include/efi.h +++ b/include/efi.h @@ -159,6 +159,8 @@ struct efi_mem_desc { u64 attribute; };
+#define EFI_MEMORY_DESCRIPTOR_VERSION 1 + /* Allocation types for calls to boottime->allocate_pages*/ #define EFI_ALLOCATE_ANY_PAGES 0 #define EFI_ALLOCATE_MAX_ADDRESS 1 diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c index df3547c..80e4e26 100644 --- a/lib/efi_loader/efi_memory.c +++ b/lib/efi_loader/efi_memory.c @@ -339,6 +339,9 @@ efi_status_t efi_get_memory_map(unsigned long *memory_map_size, if (descriptor_size) *descriptor_size = sizeof(struct efi_mem_desc);
+ if (descriptor_version) + *descriptor_version = EFI_MEMORY_DESCRIPTOR_VERSION; + if (*memory_map_size < map_size) return EFI_BUFFER_TOO_SMALL;
participants (1)
-
Mian Yousaf Kaukab