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

kojima.masahisa at socionext.com kojima.masahisa at socionext.com
Wed Jan 7 01:34:58 CET 2026


Hi Heinrich, Kunihiko,

> -----Original Message-----
> From: Kunihiko Hayashi <hayashi.kunihiko at socionext.com>
> Sent: Friday, December 26, 2025 4:38 PM
> To: u-boot at lists.denx.de; Heinrich Schuchardt <xypron.glpk at gmx.de>
> Cc: Kojima, Masahisa/小島 雅久 <kojima.masahisa at socionext.com>; Ilias
> Apalodimas <ilias.apalodimas at linaro.org>; Simon Glass
> <sjg at chromium.org>; Morimoto, Masashi/森本 真史
> <morimoto.masashi at socionext.com>
> Subject: Re: [PATCH] bootm: fix boot failure from compressed image for
> IH_OS_EFI
> 
> 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?

The current test, test/py/tests/test_efi_fit.py, is able to detect the original problem
of a boot failure with a compressed image, although running the test requires some
configuration changes.

> >>
> >> 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.

This patch fixes the issue. I will resend it as v2.

Thanks,
Masahisa Kojima

> 
> Thank you,
> 
> ---
> Best Regards
> Kunihiko Hayashi


More information about the U-Boot mailing list