bootm: fix boot failure from compressed image for IH_OS_EFI
The bootm command can handle the compressed image, but current
code fails to boot from it.
## Loading kernel (any) from FIT Image at a8000000 ...
<snip>
Compression: gzip compressed
Data Start: 0xa80000d4
Data Size: 10114520 Bytes = 9.6 MiB
Architecture: AArch64
OS: EFI Firmware
Load Address: 0x90000000
<snip>
Uncompressing Kernel Image to 90000000
## Transferring control to EFI (at address a80000d4) ...
Booting <NULL>
Not a PE-COFF file
Loading image failed
To take care of the compressed image, the load address needs
to be passed instead of the original compressed image address.
Signed-off-by: Masahisa Kojima <kojima.masahisa@socionext.com>
Tested-by: Kunihiko Hayashi <hayashi.kunihiko@socionext.com>
This commit is contained in:
committed by
Heinrich Schuchardt
parent
8e16fbfd14
commit
e82f01a236
@@ -509,11 +509,11 @@ static int do_bootm_efi(int flag, struct bootm_info *bmi)
|
|||||||
/* We expect to return */
|
/* We expect to return */
|
||||||
images->os.type = IH_TYPE_STANDALONE;
|
images->os.type = IH_TYPE_STANDALONE;
|
||||||
|
|
||||||
image_buf = map_sysmem(images->os.image_start, images->os.image_len);
|
image_buf = map_sysmem(images->os.load, images->os.image_len);
|
||||||
|
|
||||||
/* Run EFI image */
|
/* Run EFI image */
|
||||||
printf("## Transferring control to EFI (at address %08lx) ...\n",
|
printf("## Transferring control to EFI (at address %08lx) ...\n",
|
||||||
images->os.image_start);
|
images->os.load);
|
||||||
bootstage_mark(BOOTSTAGE_ID_RUN_OS);
|
bootstage_mark(BOOTSTAGE_ID_RUN_OS);
|
||||||
|
|
||||||
ret = efi_binary_run(image_buf, images->os.image_len,
|
ret = efi_binary_run(image_buf, images->os.image_len,
|
||||||
|
|||||||
Reference in New Issue
Block a user