diff mbox series

rockchip: Set default LNX_KRNL_IMG_TEXT_OFFSET_BASE to SYS_TEXT_BASE

Message ID 20220129152756.15951-1-alpernebiyasak@gmail.com
State Accepted
Commit b42297ba8136c10bbd9b2b2b5f76ad836e456935
Delegated to: Kever Yang
Headers show
Series rockchip: Set default LNX_KRNL_IMG_TEXT_OFFSET_BASE to SYS_TEXT_BASE | expand

Commit Message

Alper Nebi Yasak Jan. 29, 2022, 3:27 p.m. UTC
U-Boot can be chainloaded from vendor firmware on ARM64 chromebooks from
a GPT partition (roughly the same as in doc/chromium/chainload.rst), but
an appropriate image header must be built-in to the U-Boot binary by
enabling LINUX_KERNEL_IMAGE_HEADER.

This header has a field for an image load offset from 2MiB alignment
which must also be customized through LNX_KRNL_IMG_TEXT_OFFSET_BASE.
Set it equal to SYS_TEXT_BASE by default for Rockchip boards, which
happens to make this offset zero and works fine on chromebook_kevin
both for chainloading and bare-metal use.

Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
---
Looks like ARM64 chromebooks also need POSITION_INDEPENDENT=y to
chainload that way, but I'm not enabling the configs here. I'm thinking
of selecting these from new configs that also enable binman definitions
for the kernel partition and legacy boot images.

 arch/arm/mach-rockchip/Kconfig | 3 +++
 1 file changed, 3 insertions(+)

Comments

Simon Glass Feb. 11, 2022, 3:05 p.m. UTC | #1
On Sat, 29 Jan 2022 at 08:28, Alper Nebi Yasak <alpernebiyasak@gmail.com> wrote:
>
> U-Boot can be chainloaded from vendor firmware on ARM64 chromebooks from
> a GPT partition (roughly the same as in doc/chromium/chainload.rst), but
> an appropriate image header must be built-in to the U-Boot binary by
> enabling LINUX_KERNEL_IMAGE_HEADER.
>
> This header has a field for an image load offset from 2MiB alignment
> which must also be customized through LNX_KRNL_IMG_TEXT_OFFSET_BASE.
> Set it equal to SYS_TEXT_BASE by default for Rockchip boards, which
> happens to make this offset zero and works fine on chromebook_kevin
> both for chainloading and bare-metal use.
>
> Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>
> ---
> Looks like ARM64 chromebooks also need POSITION_INDEPENDENT=y to
> chainload that way, but I'm not enabling the configs here. I'm thinking
> of selecting these from new configs that also enable binman definitions
> for the kernel partition and legacy boot images.
>
>  arch/arm/mach-rockchip/Kconfig | 3 +++
>  1 file changed, 3 insertions(+)
>

Reviewed-by: Simon Glass <sjg@chromium.org>
Kever Yang March 14, 2022, 8 a.m. UTC | #2
Hi Alper,

Alper Nebi Yasak <alpernebiyasak@gmail.com> 于2022年1月29日周六 23:28写道:
>
> U-Boot can be chainloaded from vendor firmware on ARM64 chromebooks from
> a GPT partition (roughly the same as in doc/chromium/chainload.rst), but
> an appropriate image header must be built-in to the U-Boot binary by
> enabling LINUX_KERNEL_IMAGE_HEADER.
>
> This header has a field for an image load offset from 2MiB alignment
> which must also be customized through LNX_KRNL_IMG_TEXT_OFFSET_BASE.
> Set it equal to SYS_TEXT_BASE by default for Rockchip boards, which
> happens to make this offset zero and works fine on chromebook_kevin
> both for chainloading and bare-metal use.
>
> Signed-off-by: Alper Nebi Yasak <alpernebiyasak@gmail.com>

Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> Looks like ARM64 chromebooks also need POSITION_INDEPENDENT=y to
> chainload that way, but I'm not enabling the configs here. I'm thinking
> of selecting these from new configs that also enable binman definitions
> for the kernel partition and legacy boot images.
>
>  arch/arm/mach-rockchip/Kconfig | 3 +++
>  1 file changed, 3 insertions(+)
>
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index 92f35309e4a6..308dc09b0389 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -390,6 +390,9 @@ config ROCKCHIP_SPI_IMAGE
>           containing U-Boot. The image is built by binman. U-Boot sits near
>           the start of the image.
>
> +config LNX_KRNL_IMG_TEXT_OFFSET_BASE
> +       default SYS_TEXT_BASE
> +
>  source "arch/arm/mach-rockchip/px30/Kconfig"
>  source "arch/arm/mach-rockchip/rk3036/Kconfig"
>  source "arch/arm/mach-rockchip/rk3128/Kconfig"
> --
> 2.34.1
>
diff mbox series

Patch

diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
index 92f35309e4a6..308dc09b0389 100644
--- a/arch/arm/mach-rockchip/Kconfig
+++ b/arch/arm/mach-rockchip/Kconfig
@@ -390,6 +390,9 @@  config ROCKCHIP_SPI_IMAGE
 	  containing U-Boot. The image is built by binman. U-Boot sits near
 	  the start of the image.
 
+config LNX_KRNL_IMG_TEXT_OFFSET_BASE
+	default SYS_TEXT_BASE
+
 source "arch/arm/mach-rockchip/px30/Kconfig"
 source "arch/arm/mach-rockchip/rk3036/Kconfig"
 source "arch/arm/mach-rockchip/rk3128/Kconfig"