[PATCH 1/1] efi_loader: create reservations after ft_board_setup

Atish Patra atishp at atishpatra.org
Wed Mar 18 20:26:36 CET 2020


On Sat, Mar 14, 2020 at 3:12 AM Heinrich Schuchardt <xypron.glpk at gmx.de> wrote:
>
> Some memory reservations are made in ft_board_setup(). Ensure that we
> create reserved memory map entries after ft_board_setup().
>
> The downside of this patch is that if bootefi is called multiple times with
> an devicetree argument superfluous reservations for the old copies of the
> device tree will exist. But that is still better than missing a reservation.
>
> Deleting the superfluous reservations is not possible because reservations
> in the memory map are rounded to page size and may be coallesced.
>
> Signed-off-by: Heinrich Schuchardt <xypron.glpk at gmx.de>
> ---
>  cmd/bootefi.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/cmd/bootefi.c b/cmd/bootefi.c
> index 485f4b408a..9990959fe7 100644
> --- a/cmd/bootefi.c
> +++ b/cmd/bootefi.c
> @@ -293,9 +293,6 @@ efi_status_t efi_install_fdt(void *fdt)
>                 return EFI_LOAD_ERROR;
>         }
>
> -       /* Create memory reservations as indicated by the device tree */
> -       efi_carve_out_dt_rsv(fdt);
> -
>         /* Prepare device tree for payload */
>         ret = copy_fdt(&fdt);
>         if (ret) {
> @@ -303,6 +300,9 @@ efi_status_t efi_install_fdt(void *fdt)
>                 return EFI_OUT_OF_RESOURCES;
>         }
>
> +       /* Create memory reservations as indicated by the device tree */
> +       efi_carve_out_dt_rsv(fdt);
> +
>         /* Install device tree as UEFI table */
>         ret = efi_install_configuration_table(&efi_guid_fdt, fdt);
>         if (ret != EFI_SUCCESS) {
> --
> 2.25.1
>
As per my understanding, copy_fdt tries allocate efi memory below dram
start + 127MB
for device tree. If efi_carve_out_dt_rsv is called after copy_fdt, it
may overwrite
a reserved-memory region. No ?



-- 
Regards,
Atish


More information about the U-Boot mailing list