mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
Merge tag 'signed-efi-next' of git://github.com/agraf/u-boot
Patch queue for efi - 2017-10-13 This is the second batch of amazing improvements for efi_loader in 2017.11: - New self tests to verify our own code - A few bug fixes - colored text support - event and SNP improvements, should get us close to iPXE working
This commit is contained in:
@@ -127,6 +127,7 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt,
|
||||
{
|
||||
struct efi_loaded_image loaded_image_info = {};
|
||||
struct efi_object loaded_image_info_obj = {};
|
||||
struct efi_device_path *memdp = NULL;
|
||||
ulong ret;
|
||||
|
||||
ulong (*entry)(void *image_handle, struct efi_system_table *st)
|
||||
@@ -135,6 +136,20 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt,
|
||||
const efi_guid_t fdt_guid = EFI_FDT_GUID;
|
||||
bootm_headers_t img = { 0 };
|
||||
|
||||
/*
|
||||
* Special case for efi payload not loaded from disk, such as
|
||||
* 'bootefi hello' or for example payload loaded directly into
|
||||
* memory via jtag/etc:
|
||||
*/
|
||||
if (!device_path && !image_path) {
|
||||
printf("WARNING: using memory device/image path, this may confuse some payloads!\n");
|
||||
/* actual addresses filled in after efi_load_pe() */
|
||||
memdp = efi_dp_from_mem(0, 0, 0);
|
||||
device_path = image_path = memdp;
|
||||
} else {
|
||||
assert(device_path && image_path);
|
||||
}
|
||||
|
||||
/* Initialize and populate EFI object list */
|
||||
if (!efi_obj_list_initalized)
|
||||
efi_init_obj_list();
|
||||
@@ -181,6 +196,14 @@ static unsigned long do_bootefi_exec(void *efi, void *fdt,
|
||||
goto exit;
|
||||
}
|
||||
|
||||
if (memdp) {
|
||||
struct efi_device_path_memory *mdp = (void *)memdp;
|
||||
mdp->memory_type = loaded_image_info.image_code_type;
|
||||
mdp->start_address = (uintptr_t)loaded_image_info.image_base;
|
||||
mdp->end_address = mdp->start_address +
|
||||
loaded_image_info.image_size;
|
||||
}
|
||||
|
||||
/* we don't support much: */
|
||||
env_set("efi_8be4df61-93ca-11d2-aa0d-00e098032b8c_OsIndicationsSupported",
|
||||
"{ro,boot}(blob)0000000000000000");
|
||||
|
||||
Reference in New Issue
Block a user