All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Relax memory constraints on required_pages for EFI boot
@ 2021-01-17 22:43 Hanson Char
  2022-07-07 13:34 ` Daniel Kiper
  0 siblings, 1 reply; 2+ messages in thread
From: Hanson Char @ 2021-01-17 22:43 UTC (permalink / raw)
  To: grub-devel, hanson.char; +Cc: Hanson Char

(Finally figured out how to git send-email on this patch properly.)

As reported earlier, when booted in UEFI mode, Grub would fail to load a
ramdisk of size larger than "(total_pages >> 2)" with

    "error: out of memory"

(https://git.savannah.gnu.org/cgit/grub.git/tree/grub-core/kern/efi/mm.c#n616)

Further investigation into the EFI memory map indicates the current limit of
MAX_HEAP_MEMORY and the use of a quarter of the total_pages returned from EFI
available memory (type 7) as the default seems arbitrary and unnecessary.

Therefore this proposed patch removes the aribrary limit, and lets Grub make
full use of the EFI available memory reported by the BIOS.

The patch has been successfully tested to load large ramdisk with size that
would otherwise fail.

Regards,
Hanson

Signed-off-by: Hanson Char <hchar@amazon.com>
---
 grub-core/kern/efi/mm.c | 12 +++---------
 1 file changed, 3 insertions(+), 9 deletions(-)

diff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c
index 457772d57..9cf6a4d34 100644
--- a/grub-core/kern/efi/mm.c
+++ b/grub-core/kern/efi/mm.c
@@ -38,9 +38,8 @@
    a multiplier of 4KB.  */
 #define MEMORY_MAP_SIZE	0x3000
 
-/* The minimum and maximum heap size for GRUB itself.  */
+/* The minimum heap size for GRUB itself.  */
 #define MIN_HEAP_SIZE	0x100000
-#define MAX_HEAP_SIZE	(1600 * 0x100000)
 
 static void *finish_mmap_buf = 0;
 static grub_efi_uintn_t finish_mmap_size = 0;
@@ -569,7 +568,6 @@ grub_efi_mm_init (void)
   grub_efi_memory_descriptor_t *filtered_memory_map_end;
   grub_efi_uintn_t map_size;
   grub_efi_uintn_t desc_size;
-  grub_efi_uint64_t total_pages;
   grub_efi_uint64_t required_pages;
   int mm_status;
 
@@ -610,14 +608,10 @@ grub_efi_mm_init (void)
   filtered_memory_map_end = filter_memory_map (memory_map, filtered_memory_map,
 					       desc_size, memory_map_end);
 
-  /* By default, request a quarter of the available memory.  */
-  total_pages = get_total_pages (filtered_memory_map, desc_size,
-				 filtered_memory_map_end);
-  required_pages = (total_pages >> 2);
+  required_pages = get_total_pages (filtered_memory_map, desc_size,
+                                    filtered_memory_map_end);
   if (required_pages < BYTES_TO_PAGES (MIN_HEAP_SIZE))
     required_pages = BYTES_TO_PAGES (MIN_HEAP_SIZE);
-  else if (required_pages > BYTES_TO_PAGES (MAX_HEAP_SIZE))
-    required_pages = BYTES_TO_PAGES (MAX_HEAP_SIZE);
 
   /* Sort the filtered descriptors, so that GRUB can allocate pages
      from smaller regions.  */
-- 
2.30.0



^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH] Relax memory constraints on required_pages for EFI boot
  2021-01-17 22:43 [PATCH] Relax memory constraints on required_pages for EFI boot Hanson Char
@ 2022-07-07 13:34 ` Daniel Kiper
  0 siblings, 0 replies; 2+ messages in thread
From: Daniel Kiper @ 2022-07-07 13:34 UTC (permalink / raw)
  To: hanson.char, hchar; +Cc: grub-devel

Hi,

On Sun, Jan 17, 2021 at 02:43:50PM -0800, Hanson Char via Grub-devel wrote:
> (Finally figured out how to git send-email on this patch properly.)
>
> As reported earlier, when booted in UEFI mode, Grub would fail to load a
> ramdisk of size larger than "(total_pages >> 2)" with
>
>     "error: out of memory"
>
> (https://git.savannah.gnu.org/cgit/grub.git/tree/grub-core/kern/efi/mm.c#n616)
>
> Further investigation into the EFI memory map indicates the current limit of
> MAX_HEAP_MEMORY and the use of a quarter of the total_pages returned from EFI
> available memory (type 7) as the default seems arbitrary and unnecessary.
>
> Therefore this proposed patch removes the aribrary limit, and lets Grub make
> full use of the EFI available memory reported by the BIOS.
>
> The patch has been successfully tested to load large ramdisk with size that
> would otherwise fail.

I am not sure you still care about the issue but I want to give you
heads up we have just merged alternative solution into the GRUB upstream
which should solve your problem. It would be nice if you could test it
and tell us how it works for you.

Daniel


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-07-07 13:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-17 22:43 [PATCH] Relax memory constraints on required_pages for EFI boot Hanson Char
2022-07-07 13:34 ` Daniel Kiper

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.