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.

Yours,
Paul



Attachment: OpenPGP_0x44173FA13D058888.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature
Description: OpenPGP digital signature

Reply via email to