[U-Boot] [PATCH v2] efi_loader: Reserve unaccessible memory
Stephen Warren
swarren at wwwdotorg.org
Fri Nov 30 17:18:38 UTC 2018
On 11/29/18 6:11 PM, Alexander Graf wrote:
> On some systems, not all RAM may be usable within U-Boot. Maybe the
> memory maps are incomplete, maybe it's used as workaround for broken
> DMA. But whatever the reason may be, a platform can say that it does
> not wish to have its RAM accessed above a certain address by defining
> board_get_usable_ram_top().
>
> In the efi_loader world, we ignored that hint, mostly because very few
> boards actually have real restrictions around this.
>
> So let's honor the board's wish to not access high addresses during
> boot time. The best way to do so is by indicating the respective pages
> as "allocated by firmware". That way, Operating Systems will still
> use the pages after boot, but before boot no allocation will use them.
> diff --git a/lib/efi_loader/efi_memory.c b/lib/efi_loader/efi_memory.c
> __weak void efi_add_known_memory(void)
> {
> + u64 ram_top = board_get_usable_ram_top(0) & ~EFI_PAGE_MASK;
> int i;
>
> + /* Fix for 32bit targets with ram_top at 4G */
> + if (!ram_top)
> + ram_top = U32_MAX;
Don't you need to &= ~EFI_PAGE_MASK after the U32_MAX assignment too?
Perhaps just do that once:
u64 ram_top = board_get_usable_ram_top(0);
/* Fix for 32bit targets with ram_top at 4G */
if (!ram_top)
ram_top = U32_MAX;
ram_top &= & ~EFI_PAGE_MASK;
Otherwise,
Reviewed-by: Stephen Warren <swarren at nvidia.com>
More information about the U-Boot
mailing list