On Sat, Mar 14, 2020 at 3:12 AM Heinrich Schuchardt <xypron.g...@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.g...@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