[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