From 4c02c11de89388db29ac413b09d1ab5ae63f3ecb Mon Sep 17 00:00:00 2001 From: Mian Yousaf Kaukab Date: Mon, 5 Sep 2016 23:59:22 +0200 Subject: [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 --- 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;