[PATCH] TI: include: env: ti_common: move fdtoverlay_addr_r to fix ramdisk size

Mattijs Korpershoek mkorpershoek at baylibre.com
Fri Oct 11 17:39:53 CEST 2024


Hi Judith,

Thank you for sending this patch.

On jeu., oct. 10, 2024 at 19:03, Judith Mendez <jm at ti.com> wrote:

> From: Mattijs Korpershoek <mkorpershoek at baylibre.com>
>
> When booting Android with adtbo_idx set, we observe the
> following crash:

In upstream/master, this is no such thing as adtbo_idx.

This is only present in TI's U-Boot fork, via commit [1]

[1] https://git.ti.com/cgit/ti-u-boot/ti-u-boot/commit/?h=ti-u-boot-2024.04&id=1c6cf852b8b8f869d2c5e39eb071ec3025bf739a

>
>    ** Booting bootflow 'mmc at fa10000.bootdev.whole' with android
>    ## Booting Android Image at 0x82000000 ...
>    Kernel load addr 0x92000000 size 20195 KiB
>    Kernel extra command line: console=ttyS2,115200 cma=768M 8250.
> 	nr_uarts=10 printk.devkmsg=on init=/init quiet firmware_class.
> 	path=/vendor/firmware mem_sleep_default=deep bootconfig
>    RAM disk load addr 0x88080000 size 16901 KiB
>    "Synchronous Abort" handler, esr 0x96000005, far 0x155b104c8
>    elr: 0000000080808560 lr : 0000000080808558 (reloc)
>    elr: 00000000ffebf560 lr : 00000000ffebf558
>    x0 : 00000000fff99000 x1 : 00000000fff9553c
>    x2 : 000000000000000a x3 : 0000000002800000
>    x4 : 0000000002800000 x5 : 0000000000000020
>
> This happens because the memory at fdtoverlay_addr_r is bogus.
> In fact:
>
> => printenv fdtoverlay_addr_r
> fdtoverlay_addr_r=0x89000000
>
> And the ramdisk address range is:
> [0x88080000; 0x88080000 + 16901 KiB]
>
> Which is equal to:
> [0x88080000; 0x89101400]
>
> So, if we represent the addresses:
> fdtaddr             0x88000000
> ramdisk             0x88080000
> fdtoverlay_addr_r   0x89000000
> ramisk (end)        0x89101400
>
> We see that fdtoverlay_addr_r in fact has been overridden by
> the Android ramdisk.
>
> The maximum ramdisk size is 0x1080000 (15,5 MiB) and a compressed
> Android vendor ramdisk is 15MiB:
> $ file vendor_ramdisk.img
> vendor_ramdisk.img: LZ4 compressed data (v0.1-v0.9)
> $ du -sh vendor_ramdisk.img
> 15M     vendor_ramdisk.img
>
> When it gets decompressed, it uses 16.5MiB, exceeding the
> maximum ramdisk size.
>
> Increase the maximum ramdisk size to 20.5MiB by moving
> fdtoverlay_addr_r higher up in the address space to fix the crash.

I do think that reserving more room between the fdtoverlay_addr_r and
the ramdisk address is probably a good idea for Linux as well, but I
think that the commit message might need a rewrite ?

>
> Signed-off-by: Mattijs Korpershoek <mkorpershoek at baylibre.com>
> Signed-off-by: Judith Mendez <jm at ti.com>
> ---
>  include/env/ti/ti_common.env | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/include/env/ti/ti_common.env b/include/env/ti/ti_common.env
> index 7029d12bf20..a15af79d9c3 100644
> --- a/include/env/ti/ti_common.env
> +++ b/include/env/ti/ti_common.env
> @@ -3,7 +3,7 @@ kernel_addr_r=0x82000000
>  fdtaddr=0x88000000
>  dtboaddr=0x89000000
>  fdt_addr_r=0x88000000
> -fdtoverlay_addr_r=0x89000000
> +fdtoverlay_addr_r=0x89500000
>  rdaddr=0x88080000
>  ramdisk_addr_r=0x88080000
>  scriptaddr=0x80000000
>
> base-commit: a404065479be2c1fe1167c3c91367e8194a69d1b
> -- 
> 2.46.2


More information about the U-Boot mailing list