Hi Andre,

On 11.12.24 г. 23:53 ч., Andre Przywara wrote:
On Mon, 9 Dec 2024 23:08:19 +0200
Leon Anavi<[email protected]> wrote:

Hi Leon,

thanks for the report!

Commit ffb0294 from 12 November 2023 that simplifies early PMIC setup
conditions causes issues on Cubieboard 4 and Merrii A80 Optimus with
Allwinner A80 SoC (sun9i). The commit was introduced with U-Boot 2024.01
(rc3) and remains as of today. Because of it both of these boards hang at:

Starting kernel ...
That's odd, how do you boot the kernel, exactly?
I just tried mainline U-Boot (via FEL), with:
=> setenv bootargs "console=ttyS0,115200n8 earlycon"
=> bootz $kernel_addr_r $ramdisk_addr_r:300000 $fdtcontroladdr

and it booted fine to the prompt, on a Cubieboard 4 (CC-A80 v1.2).
Kernel was some 6.11-rc6 I just had lying around.

I also compared the code before and after that patch, the only
difference is the order at which DCDC5 gets programmed: before it's
after DCDC4, with the patch it's right after DCDC1.
The rest looked the same.
Booting ffb0294~1 and ffb0294~0 also worked for me, without issues.
So can you please describe how you test that, exactly?
I built core-image-base using the Yocto Project and OpenEmbedded as well as the meta-sunxi BSP layer. The U-Boot version depends on the Yocto release. For Scarthgap it is with U-Boot 2024.01 and for the ongoing development in the master branches the U-Boot version is 2024.10. The Linux kernel version is 6.6.28. I experienced the same issue with both U-Boot versions on Merrii A80 Optimus and Lazar (his email is CC) confirmed the same results on Cubieboard 4. The boot sequence for the boards in meta-sunxi is through boot.scr generated from the following boot.cmd:
https://github.com/linux-sunxi/meta-sunxi/blob/master/recipes-bsp/u-boot/files/arm/boot.cmd

In a nutshell, the issue can be reproduced with the following scenario in U-Boot:

setenv bootargs console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p2 rootwait panic=10
load mmc 0:1 ${fdt_addr_r} ${fdtfile}
load mmc 0:1 ${kernel_addr_r} zImage
bootz ${kernel_addr_r} - ${fdt_addr_r}

Merrii A80 Optimus board boots fine if I revert commit ffb0294. However, if commit ffb0294 is present in U-Boot the board hangs. Here is the log: U-Boot 2024.10-dirty (Oct 07 2024 - 14:54:35 +0000) Allwinner Technology CPU: Allwinner A80 (SUN9I) Model: Merrii A80 Optimus Board DRAM: 2 GiB Core: 62 devices, 18 uclasses, devicetree: separate WDT: Not starting watchdog@6000ca0 WDT: Not starting watchdog@8001000 MMC: sunxi_set_reset: (RST#0) unhandled sunxi_set_reset: (RST#2) unhandled sunxi_set_reset: (RST#1) unhandled mmc@1c0f000: 0, mmc@1c10000: 2, mmc@1c11000: 1 Loading Environment from FAT... Unable to read "uboot.env" from mmc0:1... In: serial@7000000 Out: serial@7000000 Err: serial@7000000 Net: No ethernet found. Hit any key to stop autoboot: 0 => setenv bootargs console=ttyS0,115200 console=tty1 root=/dev/mmcblk0p2 rootwait panic=10 => load mmc 0:1 ${fdt_addr_r} ${fdtfile} 24443 bytes read in 3 ms (7.8 MiB/s) => load mmc 0:1 ${kernel_addr_r} zImage 5397992 bytes read in 236 ms (21.8 MiB/s) => bootz ${kernel_addr_r} - ${fdt_addr_r} Kernel image @ 0x22000000 [ 0x000000 - 0x525de8 ] ## Flattened Device Tree blob at 23000000 Booting using the fdt blob at 0x23000000 Working FDT set to 23000000 Loading Device Tree to 29ff7000, end 29ffff7a ... OK Working FDT set to 29ff7000 Starting kernel ... Please note that U-Boot is marked with suffix "-dirty" because of the patches applied by u-boot_%.bbappend from Yocto/OE layer meta-sunxi but these patches are for other boards and don't touch the file board/sunxi/board.c. Am I missing something as a configuration that can make the board boot the same way without hanging when commit ffb0294 is present?Best regards,
Leon


Please also note we fixed d75fa8c80dcfa in U-Boot (DCDC4/5 typo), and
dd36ad71ad6 in the kernel (DCDC5 constraints in the DT).

Cheers,
Andre

Older U-Boot versions without this commit work fine. As a temporary
solution I reverted commit ffb0294 and this way the boards boot
successfully. I tested this work around on Merrii A80 Optimus with several
U-Boot versions, including with U-Boot 2024.10.

Lazar, a friend who owns Cubieboard 4, also tested and confirmed his board
boots with U-Boot 2024.10 if this commit has been reverted.

How to fix this? Is there a known configuration that can be added to
Merrii_A80_Optimus_defconfig and Cubieboard4_defconfig to avoid hanging
with the existing source code from commit ffb0294 ?

Best regards,
Leon

Reply via email to