efi_loader: Don't carve out memory reservations too early

Moving the efi_carve_out_dt_rsv() call in commit 1be415b21b
("efi_loader: create memory reservations in ACPI case")
broke boards that create additional memory reservations in
ft_board_setup() since it is now called before those additional
memory reservations are made.  This is the case for the rk3588
boards and breaks booting OpenBSD on those boards.

Move the call back to its original location and add a call in
the code path used for ACPI.

Fixes: 1be415b21b ("efi_loader: create memory reservations in ACPI case")
Signed-off-by: Mark Kettenis <kettenis@openbsd.org>
Reviewed-by: Heinrich Schuchardt <heinrich.schuchardt@canonical.com>
This commit is contained in:
Mark Kettenis 2024-02-16 00:25:34 +01:00 committed by Heinrich Schuchardt
parent 0dc8cbda52
commit 1431ab8b6c

View file

@ -456,11 +456,11 @@ 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);
if (CONFIG_IS_ENABLED(GENERATE_ACPI_TABLE))
if (CONFIG_IS_ENABLED(GENERATE_ACPI_TABLE)) {
/* Create memory reservations as indicated by the device tree */
efi_carve_out_dt_rsv(fdt);
return EFI_SUCCESS;
}
/* Prepare device tree for payload */
ret = copy_fdt(&fdt);
@ -474,6 +474,9 @@ 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);
efi_try_purge_kaslr_seed(fdt);
if (CONFIG_IS_ENABLED(EFI_TCG2_PROTOCOL_MEASURE_DTB)) {