Re: [PATCH 3/3] efi_loader: Move device-removal later in exit-boot-services
Heinrich Schuchardt
xypron.glpk at gmx.de
Sun Apr 6 00:30:15 CEST 2025
Am 6. April 2025 00:12:47 MESZ schrieb Simon Glass <sjg at chromium.org>:
>This removal should be the last thing done, so that U-Boot does no more
>memory allocations afterwards. Move it and add a comment.
>
>Note that the TCG2 log is updated after this call, but I cannot see any
>allocations there.
>
>Reported-by: Christian Kohlschütter <christian at kohlschutter.com>
This commit message fails to describe which problem has been observed and you try to solve.
A link to the original communication would be helpful.
Furthermore, please, rebase it on my patch adding eth_halt().
<https://lore.kernel.org/u-boot/CAFLszTgp38yBXnSigfT-mEFU=rqyAKjp0WBQGgHP_N3vRxCq=Q@mail.gmail.com/T/#m1e55cc094f575797da3b4aed6b369544f8d6f8f4>
Best regards
Heinrich
>
>Signed-off-by: Simon Glass <sjg at chromium.org>
>---
>
> lib/efi_loader/efi_boottime.c | 21 +++++++++++++--------
> 1 file changed, 13 insertions(+), 8 deletions(-)
>
>diff --git a/lib/efi_loader/efi_boottime.c b/lib/efi_loader/efi_boottime.c
>index ffe43accd1e..e525662f82f 100644
>--- a/lib/efi_loader/efi_boottime.c
>+++ b/lib/efi_loader/efi_boottime.c
>@@ -2250,14 +2250,6 @@ static efi_status_t EFIAPI efi_exit_boot_services(efi_handle_t image_handle,
> list_del(&evt->link);
> }
>
>- if (!efi_st_keep_devices) {
>- bootm_disable_interrupts();
>- if (IS_ENABLED(CONFIG_USB_DEVICE))
>- udc_disconnect();
>- board_quiesce_devices();
>- dm_remove_devices_active();
>- }
>-
> /* Patch out unsupported runtime function */
> efi_runtime_detach();
>
>@@ -2279,6 +2271,19 @@ static efi_status_t EFIAPI efi_exit_boot_services(efi_handle_t image_handle,
> /* Give the payload some time to boot */
> efi_set_watchdog(0);
> schedule();
>+
>+ /*
>+ * this should be the last thing done, to avoid memory allocations
>+ * between removing devices and the OS taking over
>+ */
>+ if (!efi_st_keep_devices) {
>+ bootm_disable_interrupts();
>+ if (IS_ENABLED(CONFIG_USB_DEVICE))
>+ udc_disconnect();
>+ board_quiesce_devices();
>+ dm_remove_devices_active();
>+ }
>+
> out:
> if (IS_ENABLED(CONFIG_EFI_TCG2_PROTOCOL)) {
> if (ret != EFI_SUCCESS)
More information about the U-Boot
mailing list