[PATCH 1/3] efi: Add debugging to efi_set_bootdev()
Heinrich Schuchardt
xypron.glpk at gmx.de
Tue Jan 25 04:54:18 CET 2022
On 1/22/22 02:16, Simon Glass wrote:
> The operation of this function can be confusing. Add some debugging so
> we can see what it is doing and when it is called.
>
> Also drop the preprocessor usage.
>
> Signed-off-by: Simon Glass <sjg at chromium.org>
> ---
>
> cmd/bootefi.c | 32 +++++++++++++++++++++-----------
> 1 file changed, 21 insertions(+), 11 deletions(-)
>
> diff --git a/cmd/bootefi.c b/cmd/bootefi.c
> index 3a8b2b60618..d8685f0e878 100644
> --- a/cmd/bootefi.c
> +++ b/cmd/bootefi.c
> @@ -65,6 +65,9 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path,
> struct efi_device_path *device, *image;
> efi_status_t ret;
>
> + log_debug("dev=%s, devnr=%s, path=%s, buffer=%p, size=%zx\n", dev,
> + devnr, path, buffer, buffer_size);
> +
> /* Forget overwritten image */
> if (buffer + buffer_size >= image_addr &&
> image_addr + image_size >= buffer)
> @@ -72,18 +75,19 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path,
>
> /* Remember only PE-COFF and FIT images */
> if (efi_check_pe(buffer, buffer_size, NULL) != EFI_SUCCESS) {
> -#ifdef CONFIG_FIT
> - if (fit_check_format(buffer, IMAGE_SIZE_INVAL))
> + if (IS_ENABLED(CONFIG_FIT) &&
> + !fit_check_format(buffer, IMAGE_SIZE_INVAL)) {
This looks ok.
> + /*
> + * FIT images of type EFI_OS are started via command
> + * bootm. We should not use their boot device with the
> + * bootefi command.
> + */
> + buffer = 0;
> + buffer_size = 0;
> + } else {
> + log_debug("- invalid image\n");
This function is called by the 'load' command. When loading a perfectly
valid device-tree or initial RAM disk the message would confuse me.
What is that '- ' good for?
Best regards
Heinrich
> return;
> - /*
> - * FIT images of type EFI_OS are started via command bootm.
> - * We should not use their boot device with the bootefi command.
> - */
> - buffer = 0;
> - buffer_size = 0;
> -#else
> - return;
> -#endif
> + }
> }
>
> /* efi_set_bootdev() is typically called repeatedly, recover memory */
> @@ -103,7 +107,11 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path,
> efi_free_pool(image_tmp);
> }
> bootefi_image_path = image;
> + log_debug("- recorded device %ls\n", efi_dp_str(device));
> + if (image)
> + log_debug("- and image %ls\n", efi_dp_str(image));
> } else {
> + log_debug("- efi_dp_from_name() failed, err=%lx\n", ret);
> efi_clear_bootdev();
> }
> }
> @@ -451,6 +459,7 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
> u16 *load_options;
>
> if (!bootefi_device_path || !bootefi_image_path) {
> + log_debug("Not loaded from disk\n");
> /*
> * Special case for efi payload not loaded from disk,
> * such as 'bootefi hello' or for example payload
> @@ -476,6 +485,7 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
> file_path = efi_dp_append(bootefi_device_path,
> bootefi_image_path);
> msg_path = bootefi_image_path;
> + log_debug("Loaded from disk\n");
> }
>
> log_info("Booting %pD\n", msg_path);
More information about the U-Boot
mailing list