Boot failure on Rock-pi-4-a when compiling with clang.
Tom Rini
trini at konsulko.com
Thu Aug 3 02:48:19 CEST 2023
On Thu, Aug 03, 2023 at 08:30:20AM +0800, Ying-Chun Liu (PaulLiu) wrote:
> Hi all,
>
> I'd like to have some ideas for debugging this conditions.
> When compiling with default gnu toolchain. It works great.
>
> When compiling with clang (clang-14 or clang-15),
> I'll get hang sometimes.
> The following are two boot logs:
>
> 1.
> U-Boot SPL 2023.10-rc1-00207-g38dedebc54-dirty (Aug 03 2023 - 08:08:00 +0800)
> Trying to boot from MMC1
> ## Checking hash(es) for config config-1 ... OK
> ## Checking hash(es) for Image atf-1 ... sha256+ OK
> ## Checking hash(es) for Image u-boot ... sha256+ OK
> ## Checking hash(es) for Image fdt-1 ... sha256+ OK
> ## Checking hash(es) for Image atf-2 ... sha256+ OK
> ## Checking hash(es) for Image atf-3 ... sha256+ OK
> ## Checking hash(es) for Image atf-4 ... sha256+ OK
> spl_load_fit_image: Skip load 'atf-5': image size is 0!
>
>
> U-Boot 2023.10-rc1-00207-g38dedebc54-dirty (Aug 03 2023 - 08:08:00 +0800)
>
> SoC: Rockchip rk3399
> Reset cause: POR
> Model: Radxa ROCK Pi 4A
> DRAM: initcall sequence 00000000002aeb80 failed at call 00000000002042a8 (err=-
> 19)
> ### ERROR ### Please RESET the board ###
>
> 2.
> U-Boot TPL 2023.04-maybe-dirty (Jan 01 1970 - 00:00:00)
> lpddr4_set_rate: change freq to 400MHz 0, 1
> Channel 0: LPDDR4, 400MHz
> BW=32 Col=10 Bk=8 CS0 Row=16/15 CS=1 Die BW=16 Size=2048MB
> Channel 1: LPDDR4, 400MHz
> BW=32 Col=10 Bk=8 CS0 Row=16/15 CS=1 Die BW=16 Size=2048MB
> 256B stride
> lpddr4_set_rate: change freq to 800MHz 1, 0
> Trying to boot from BOOTROM
> Returning to boot ROM...
>
> U-Boot SPL 2023.04-maybe-dirty (Jan 01 1970 - 00:00:00 +0000)
> Trying to boot from MMC1
> fdt_addr: 0x2e9c88
> Device tree error at node '__symbols__'
> Some drivers failed to bind
> initcall sequence 00000000002a95f8 failed at call 0000000000224138 (err=-11)
> ### ERROR ### Please RESET the board ###
>
> As you can see, the bug happened at difference places. For the difference of
> 1 and 2, I just turn on the "fastboot over UDP" function.
>
> Bisect is not working. Because if I keep turn on/off more extra functions
> (like fastboot over USB) it can boot sometimes. It seems to me that this
> could be some alignment or size of code problem because if I turn on
> something, the size of the binaries will be different. And some of it works,
> some not.
>
> Now I only know that v2023.01 works well. And v2023.04 is unstable. I tried
> to bisect between them but found an unrelated commit. Because some bad
> commit could runs good just because of the probability.
>
> Any ideas on how to debug this further?
>
> I'm building U-boot by.
> make O="/tmp/a1" \
> CROSS_COMPILE="aarch64-linux-gnu-" \
> CC="clang -target aarch64-linux-gnu" \
> HOSTCC="clang" \
> rock-pi-4-rk3399_defconfig
> make O="/tmp/a1" \
> CROSS_COMPILE="aarch64-linux-gnu-" \
> CC="clang -target aarch64-linux-gnu" \
> HOSTCC="clang"
> In Debian Trixie.
The only hint I have for the moment is to check what's changed in
rockchip code, assuming this is a problem still on v2023.07. Have you
tried v2023.07 / current? It has a number of minor changes for using
clang on ARM, and is when I put clang+arm in my CI loop for a few
platforms including rpi_3 and rpi_arm64.
--
Tom
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 659 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20230802/d33e0a12/attachment.sig>
More information about the U-Boot
mailing list