Which booti operations are essential when booting Linux directly from TF-A?

Tom Rini trini at konsulko.com
Fri Jun 12 18:38:45 CEST 2026


On Thu, Jun 11, 2026 at 07:29:47AM +0000, Joita Mitra wrote:

> Hi,
> I am investigating a direct Linux boot flow where ARM Trusted Firmware (TF-A) transfers control directly to Linux instead of booting U-Boot first.
> Current flow:
> 
> BL2 -> BL31 -> U-Boot -> Linux
> 
> Target flow:
> 
> BL2 -> BL31 -> Linux
> 
> While studying the ARM64 boot flow in U-Boot, I examined:
> 
> cmd/booti.c
> boot/bootm.c
> boot/bootm_os.c
> 
> and observed that U-Boot performs significantly more work than simply jumping to the kernel entry point.
> To replicate the required functionality inside TF-A, I am trying to identify which steps are essential.
> Could you please clarify:
> 
>   1.  Which parts of the booti flow are mandatory before entering an ARM64 Linux kernel?
>   2.
> If Linux is already loaded at its final execution address, which parts of booti can safely be skipped?
>   3.  Are there any minimal examples showing the required state that Linux expects when entered from firmware instead of U-Boot?
> 
> My goal is to reproduce only the minimum required Linux preparation steps inside TF-A.
> At this stage, the most important unanswered question is not how to jump to Linux, but what exact environment U-Boot creates that Linux depends on.
> Any pointers to the relevant source files or functions would be greatly appreciated.
> Thank you.

What's required to boot the Linux kernel is documented by the linux
kernel. See
https://www.kernel.org/doc/html/latest/arch/arm64/booting.html for arm64
for example.

-- 
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20260612/4d67546e/attachment.sig>


More information about the U-Boot mailing list