[PATCH] bootm: fix boot failure from compressed image for IH_OS_EFI

Kunihiko Hayashi hayashi.kunihiko at socionext.com
Fri Dec 26 08:38:02 CET 2025


On 2025/11/28 20:34, Kunihiko Hayashi wrote:
> Hi Heinrich,
> 
> On 2025/11/21 17:41, Heinrich Schuchardt wrote:
>> On 11/21/25 00:38, Masahisa Kojima wrote:
>>> 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 at socionext.com>
>>
>> Hello Masahisa,
>>
>> Thank you for diving into this problem.
>>
>> In test/py/tests/test_efi_fit.py we are testing on the sandbox with and
>> without compression. Why would the problem not show up in the test?
>>
>> 539         # Run tests
>> 540         # - fdt OFF, initrd OFF, gzip OFF
>> 541         launch_efi(False, False, False)
>> 542         # - fdt ON, initrd OFF, gzip OFF
>> 543         launch_efi(True, False, False)
>> 544         # - fdt OFF, initrd ON, gzip OFF
>> 545         launch_efi(False, True, False)
>> 546
>> 547         if is_sandbox:
>> 548             # - fdt OFF, initrd OFF, gzip ON
>> 549             launch_efi(False, False, True)
>> 550             # - fdt ON, initrd OFF, gzip ON
>> 551             launch_efi(True, False, True)
>> 552             # - fdt OFF, initrd ON, gzip ON
>> 553             launch_efi(False, True, True)
>>
>> The test should be corrected to show you issue.
> 
> Can you show us how to run it with sandbox?
> 
> To understand the situation, I tried running the test using v2025.10.
> 
>       ./test/py/test.py --bd sandbox   --build  -k efi_fit
>       ./test/py/test.py --bd sandbox64 --build  -k efi_fit
> 
> The test was skipped as follows:
>       test/py/tests/test_efi_fit.py::test_efi_fit_launch SKIPPED (.config
> feature "generate_acpi_table" enabled)
> 
> After disabling ACPI, the test failed with the following error
> and could not be reproduced.

It was a bit tricky, however, I have successfully reproduce the test in sandbox64.
(sandbox causes SEGV because of the other issue).

Before executing the test, disable the following definitions:

     CONFIG_ACPI
     CONFIG_BINFMT_FDT

This test includes three items with gzip.

     # - fdt OFF, initrd OFF, gzip ON
     launch_efi(False, False, True)
     # - fdt ON, initrd OFF, gzip ON
     launch_efi(True, False, True)
     # - fdt OFF, initrd ON, gzip ON
     launch_efi(False, True, True)

"initrd = ON" test item can't be executed.

     INITRD Dump
     ===========
     => load
     Load File2 protocol not found

This item uses File2 protocol to read "initrd" file, however,
test_efi_fit.py uses "bootm" on the FIT image, so there is no chance
to set FilePathList in EFI.

At this time, all we need to do is launch the compressed EFI app,
so we can disable "initrd" test item tentatively.

I found an error in this test before applying the patch,

     Booting /\home\user\u-boot\build-sandbox64\test-efi-fit.fit
     Not a PE-COFF file
     Loading image failed
     ...
     FAILED test/py/tests/test_efi_fit.py::test_efi_fit_launch - assert 'Hello, world'

and found no error after applying the patch.

     test/py/tests/test_efi_fit.py .                                    [100%]

Tested-by: Kunihiko Hayashi <hayashi.kunihiko at socionext.com>

If this patch is out of patchwork, maybe it should be re-posted with this tag.

Thank you,

---
Best Regards
Kunihiko Hayashi


More information about the U-Boot mailing list