grub-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] Remove unnecessary constraints on required_pages for EFI boo


From: Konrad Rzeszutek Wilk
Subject: Re: [PATCH] Remove unnecessary constraints on required_pages for EFI boot
Date: Mon, 11 Jan 2021 08:34:00 -0500
User-agent: K-9 Mail for Android

On January 10, 2021 2:41:09 PM EST, "Char, Hanson via Grub-devel" 
<grub-devel@gnu.org> wrote:
>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.
>


Something  is off with your patch. That text above should have been in the 
patch as a comment. And also your SoB in it. Could you kindly repost?


>Regards,
>Hanson
>
>From ceb27404eb281a74aa82799885cd74b530e9237e Mon Sep 17 00:00:00 2001
>From: Hanson Char <hchar@amazon.com>
>Date: Sun, 10 Jan 2021 10:57:06 -0800
>Subject: [PATCH] Remove unnecessary constraints on required_pages for
>EFI boot
>
>---
> 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.29.2
>
>_______________________________________________
>Grub-devel mailing list
>Grub-devel@gnu.org
>https://lists.gnu.org/mailman/listinfo/grub-devel




reply via email to

[Prev in Thread] Current Thread [Next in Thread]