[PATCH 1/1] bootm: pass kernel load address not entry point for IH_OS_EFI

Heinrich Schuchardt heinrich.schuchardt at canonical.com
Wed Apr 30 16:04:40 CEST 2025


On 30.04.25 15:54, Simon Glass wrote:
> Hi Heinrich,
> 
> On Wed, 30 Apr 2025 at 04:55, Heinrich Schuchardt
> <heinrich.schuchardt at canonical.com> wrote:
>>
>> The EFI sub-system needs the load address and not the entry point
>> to boot the binary passed from the bootm command. The entry point
>> is derived from the PE-COFF header of the binary.
>>
>> Fixes: ecc7fdaa9ef1 ("bootm: Add a bootm command for type IH_OS_EFI")
>> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
>> ---
>>   boot/bootm_os.c | 4 ++--
>>   1 file changed, 2 insertions(+), 2 deletions(-)
>>
>> diff --git a/boot/bootm_os.c b/boot/bootm_os.c
>> index dc9d3e61fca..a3c7cb5332e 100644
>> --- a/boot/bootm_os.c
>> +++ b/boot/bootm_os.c
>> @@ -498,11 +498,11 @@ static int do_bootm_efi(int flag, struct bootm_info *bmi)
>>          /* We expect to return */
>>          images->os.type = IH_TYPE_STANDALONE;
>>
>> -       image_buf = map_sysmem(images->ep, images->os.image_len);
>> +       image_buf = map_sysmem(images->os.image_start, images->os.image_len);
>>
>>          /* Run EFI image */
>>          printf("## Transferring control to EFI (at address %08lx) ...\n",
>> -              images->ep);
>> +              images->os.image_start);
>>          bootstage_mark(BOOTSTAGE_ID_RUN_OS);
>>
>>          ret = efi_binary_run(image_buf, images->os.image_len,
> 
> In this case ep should be set to image_start as it is with many
> methods. How come it isn't in this case?

As described above the entry point is encoded in the PE-COFF header.

What makes you think that a user would set it in an its file containing 
an EFI binary?

If it where set, it would point to an address after the load address and 
not to the start of the PE-COFF header.

The proper design would completely remove load and entry addresses in 
FIT images and use LMB for memory allocation.

Best regards

Heinrich


More information about the U-Boot mailing list