:: commit deefcb622dad9f03ee721ee2822d4b8d78c7e5f3

mintsuki <mintsuki@protonmail.com> — 2024-12-24 12:32

parents: 2e088856a8

protos/linux_risc: Fix EFI memmap configuration table preparation

diff --git a/common/protos/linux_risc.c b/common/protos/linux_risc.c
index f7cd738d..99522d1e 100644
--- a/common/protos/linux_risc.c
+++ b/common/protos/linux_risc.c
@@ -295,19 +295,14 @@ void prepare_efi_tables(struct boot_param *p, char *config) {
     }
 
     {
-        EFI_MEMORY_DESCRIPTOR tmp_mmap[1];
-        size_t mmap_size = sizeof(tmp_mmap);
-        UINTN mmap_key = 0;
+        size_t buff_size = sizeof(struct linux_efi_boot_memmap) + efi_mmap_size + 4096;
 
-        gBS->GetMemoryMap(&efi_mmap_size, tmp_mmap, &mmap_key, &efi_desc_size, &efi_desc_ver);
-        mmap_size += 4096 + sizeof(struct linux_efi_boot_memmap);
-
-        ret = gBS->AllocatePool(EfiLoaderData, efi_mmap_size, (void **)&p->memmap);
+        ret = gBS->AllocatePool(EfiLoaderData, buff_size, (void **)&p->memmap);
         if (ret != EFI_SUCCESS) {
             panic(true, "linux: failed to allocate UEFI memory map");
         }
 
-        p->memmap->buff_size = mmap_size;
+        p->memmap->buff_size = buff_size;
 
         EFI_GUID memmap_table_guid = { 0x800f683f, 0xd08b, 0x423a, { 0xa2, 0x93, 0x96, 0x5c, 0x3c, 0x6f, 0xe2, 0xb4}};
         ret = gBS->InstallConfigurationTable(&memmap_table_guid, p->memmap);
tab: 248 wrap: offon