mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 23:24:38 +00:00
efi: Add debugging to efi_set_bootdev()
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@chromium.org> Reviewed-by: heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
parent
3c95b323c7
commit
d837cb1e3b
1 changed files with 21 additions and 11 deletions
|
@ -65,6 +65,9 @@ void efi_set_bootdev(const char *dev, const char *devnr, const char *path,
|
||||||
struct efi_device_path *device, *image;
|
struct efi_device_path *device, *image;
|
||||||
efi_status_t ret;
|
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 */
|
/* Forget overwritten image */
|
||||||
if (buffer + buffer_size >= image_addr &&
|
if (buffer + buffer_size >= image_addr &&
|
||||||
image_addr + image_size >= buffer)
|
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 */
|
/* Remember only PE-COFF and FIT images */
|
||||||
if (efi_check_pe(buffer, buffer_size, NULL) != EFI_SUCCESS) {
|
if (efi_check_pe(buffer, buffer_size, NULL) != EFI_SUCCESS) {
|
||||||
#ifdef CONFIG_FIT
|
if (IS_ENABLED(CONFIG_FIT) &&
|
||||||
if (fit_check_format(buffer, IMAGE_SIZE_INVAL))
|
!fit_check_format(buffer, IMAGE_SIZE_INVAL)) {
|
||||||
|
/*
|
||||||
|
* 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("- not remembering image\n");
|
||||||
return;
|
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 */
|
/* 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);
|
efi_free_pool(image_tmp);
|
||||||
}
|
}
|
||||||
bootefi_image_path = image;
|
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 {
|
} else {
|
||||||
|
log_debug("- efi_dp_from_name() failed, err=%lx\n", ret);
|
||||||
efi_clear_bootdev();
|
efi_clear_bootdev();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -451,6 +459,7 @@ efi_status_t efi_run_image(void *source_buffer, efi_uintn_t source_size)
|
||||||
u16 *load_options;
|
u16 *load_options;
|
||||||
|
|
||||||
if (!bootefi_device_path || !bootefi_image_path) {
|
if (!bootefi_device_path || !bootefi_image_path) {
|
||||||
|
log_debug("Not loaded from disk\n");
|
||||||
/*
|
/*
|
||||||
* Special case for efi payload not loaded from disk,
|
* Special case for efi payload not loaded from disk,
|
||||||
* such as 'bootefi hello' or for example payload
|
* 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,
|
file_path = efi_dp_append(bootefi_device_path,
|
||||||
bootefi_image_path);
|
bootefi_image_path);
|
||||||
msg_path = bootefi_image_path;
|
msg_path = bootefi_image_path;
|
||||||
|
log_debug("Loaded from disk\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
log_info("Booting %pD\n", msg_path);
|
log_info("Booting %pD\n", msg_path);
|
||||||
|
|
Loading…
Reference in a new issue