Browse Source

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>
Mian Yousaf Kaukab 8 years ago
parent
commit
4c02c11de8
2 changed files with 5 additions and 0 deletions
  1. 2 0
      include/efi.h
  2. 3 0
      lib/efi_loader/efi_memory.c

+ 2 - 0
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

+ 3 - 0
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;