[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/5] efi: Allocate half of available memory by default
From: |
Leif Lindholm |
Subject: |
Re: [PATCH 1/5] efi: Allocate half of available memory by default |
Date: |
Thu, 13 Feb 2020 11:47:54 +0000 |
User-agent: |
Mutt/1.10.1 (2018-07-13) |
On Thu, Feb 06, 2020 at 15:27:29 +0100, Patrick Steinhardt wrote:
> By default, GRUB will allocate a quarter of the pages it got available
> in the EFI subsystem. On many current systems, this will amount to
> roughly 800MB of RAM assuming an address space of 32 bits. This is
> plenty for most use cases, but it doesn't suffice when using full disk
> encryption with a key derival function based on Argon2.
>
> Besides the usual iteration count known from PBKDF2, Argon2 introduces
> two additional parameters "memory" and "parallelism". While the latter
> doesn't really matter to us, the memory parameter is quite interesting.
> If encrypting a partition with LUKS2 using Argon2 as KDF, then
> cryptsetup will default to a memory parameter of 1GB. Meaning we need to
> allocate a buffer of 1GB in size in order to be able to derive the key,
> which definitely won't squeeze into the limit of 800MB.
>
> To prepare for Argon2, let's thus increase the default and make half of
> memory available, instead of a quarter only. This amounts to about
> 1600MB on above systems, which is sufficient for Argon2.
I was never a huge fan of the "grab a percentage of RAM" in the first
place, and I think "grab twice that" is not the best solution here.
(Real) corner cases that would be affected by this are:
1) chainloading grub from grub
2) OS loaders (loaded by GRUB) requiring large amounts of RAM before
ExitBootsevices().
If you have a known minimum requirement, can we work towards that
instead?
For a least-invasive approach, that could be something like
- rename required_pages target_heap_pages
- add a required_pages var initialized to ... something real
and then
if (target_heap_size < required_pages)
target_heap_pages = required_pages.
The MIN/MAX heap size could move into the "something real"
calculation, getting rid of the current (arbitrary) clamping of
MAX_HEAP_SIZE to 1.6G..
/
Leif
> Signed-off-by: Patrick Steinhardt <address@hidden>
> ---
> grub-core/kern/efi/mm.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/grub-core/kern/efi/mm.c b/grub-core/kern/efi/mm.c
> index b02fab1b1..d1f9d046b 100644
> --- a/grub-core/kern/efi/mm.c
> +++ b/grub-core/kern/efi/mm.c
> @@ -599,10 +599,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. */
> + /* By default, request half 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 = (total_pages / 2);
> 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))
> --
> 2.25.0
>
>
> _______________________________________________
> Grub-devel mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/grub-devel
- [PATCH 0/5] Support Argon2 KDF in LUKS2, Patrick Steinhardt, 2020/02/06
- [PATCH 3/5] disk: luks2: Add missing newline to debug message, Patrick Steinhardt, 2020/02/06
- [PATCH 1/5] efi: Allocate half of available memory by default, Patrick Steinhardt, 2020/02/06
- Re: [PATCH 1/5] efi: Allocate half of available memory by default,
Leif Lindholm <=
- [PATCH 4/5] disk: luks2: Discern Argon2i and Argon2id, Patrick Steinhardt, 2020/02/06
- [PATCH 2/5] argon2: Import Argon2 from cryptsetup, Patrick Steinhardt, 2020/02/06
- [PATCH 5/5] disk: luks2: Support key derival via Argon2, Patrick Steinhardt, 2020/02/06
- Re: [PATCH 0/5] Support Argon2 KDF in LUKS2, Daniel Kiper, 2020/02/11