Re: [PATCH v2 10/10] doc: falcon: Describe booting the OS through TF-A
Simon Glass <[email protected]> Tue, 4 Aug 2026 07:03:48 -0600
| Newsgroups | gmane.comp.boot-loaders.u-boot |
|---|---|
| Message-ID | <CAFLszTieNn+JSgDf=DFh-m8c+gxJ6eWJvo-2F7G7VwZ7O9tWXg@mail.gmail.com> |
Hi Alexey, On 2026-07-31T17:10:44, Alexey Charkov <[email protected]> wrote: > doc: falcon: Describe booting the OS through TF-A > > Falcon Mode documentation only covers SPL entering the kernel itself, which > is not what happens on ARM64 SoCs needing ARM Trusted Firmware resident to > provide firmware services: SPL loads a FIT holding BL31 as its firmware > image and the kernel as a loadable, and BL31 enters the kernel as BL33. > > Describe that flow, what the kernel image may be given that neither > booti_setup() nor bootz_setup() runs, how it differs from the classic flow, > and how to configure and build it on Rockchip. > > Signed-off-by: Alexey Charkov <[email protected]> > > doc/board/rockchip/rockchip.rst | 9 +++ > doc/develop/falcon.rst | 131 +++++++++++++++++++++++++++++++++++++++- > 2 files changed, 138 insertions(+), 2 deletions(-) > diff --git a/doc/board/rockchip/rockchip.rst b/doc/board/rockchip/rockchip.rst > @@ -321,6 +321,15 @@ To build rk3588 boards: > +Falcon mode > +""""""""""" > + > +ARM64 Rockchip SoCs can also boot Linux straight from SPL through TF-A, > +without U-Boot proper running at all. Enabling CONFIG_ROCKCHIP_FALCON_IMAGE > +makes binman build a ``u-boot-rockchip-falcon.itb`` holding TF-A, the kernel > +and an optional initramfs, which are passed in with LINUX_KERNEL and > +LINUX_INITRD. See :doc:`../../develop/falcon` for the details. Please point at the rockchip-falcon.config fragment here as the easy on-ramp - patch 9 adds it precisely so users do not have to hand-edit their defconfig, but nothing in either doc actually tells them to use it. A one-liner like 'make <board>_defconfig rockchip-falcon.config' would make the story complete. > diff --git a/doc/develop/falcon.rst b/doc/develop/falcon.rst > @@ -95,11 +95,138 @@ Function that a board must implement > +SPL picks BL33 in spl_invoke_atf(), which looks for an image with > +``os = "linux"`` in the ``/fit-images`` node it appended to the device tree > +and falls back to ``os = "u-boot"``. The kernel is entered at EL2 with the > +device tree address in x0, as the arm64 boot protocol requires. Just to clarify - the fallback to os = "u-boot" only happens outside secure Falcon mode, which is stated a paragraph later but reads as contradictory on first pass. Consider folding the exception into this sentence. > diff --git a/doc/develop/falcon.rst b/doc/develop/falcon.rst > @@ -95,11 +95,138 @@ Function that a board must implement > +CONFIG_SPL_UFS_RAW_OS_DEVNUM and CONFIG_SPL_UFS_RAW_OS_SECTOR against > +CONFIG_SPL_UFS_RAW_U_BOOT_DEVNUM and CONFIG_SPL_UFS_RAW_U_BOOT_SECTOR, so 'against' reads oddly here - I'd suggest 'versus' or just 'and', with a comma before 'so'. > diff --git a/doc/develop/falcon.rst b/doc/develop/falcon.rst > @@ -95,11 +95,138 @@ Function that a board must implement > +DRAM which clear BL31 and OP-TEE, and can be adjusted with > +CONFIG_ROCKCHIP_FALCON_KERNEL_LOAD and friends. Please spell out the 'friends' - CONFIG_ROCKCHIP_FALCON_FDT_LOAD and CONFIG_ROCKCHIP_FALCON_INITRD_LOAD > diff --git a/doc/develop/falcon.rst b/doc/develop/falcon.rst > @@ -95,11 +95,138 @@ Function that a board must implement > +Enabling CONFIG_SPL_LZMA or CONFIG_SPL_GZIP additionally compresses the > +kernel in the image, trading some decompression time for a smaller one - for > +a 30 MiB arm64 Image, roughly 35% of the original with LZMA and 39% with > +gzip. Note that this compresses U-Boot itself as well, since both use the > +same setting. Just to check - is 'compresses U-Boot itself as well' actually true for the Falcon-only image (u-boot-rockchip-falcon.itb), which by name does not contain U-Boot proper? I think you mean the same SPL_LZMA/SPL_GZIP knob also compresses U-Boot in the regular u-boot.itb built alongside. Worth rewording to make that unambiguous. Regards, Simon