As I mentioned here, the Armbian unofficial 24.5.0 provided in the Banana Pi M7 documentation boots fine and works as expected, provided that the package linux-dtb-legacy-rk35xx does not get upgraded. For some reason, the version 24.5.0-trunk of that package works fine, but upgrading it to version 24.5.1 breaks the boot process. For the moment, I placed an apt hold on that package, in order to avoid upgrading it by mistake. Upgrading all other packages does not cause boot problems.
I'm trying to analyze the situation, so I captured the serial console output of that image booting before upgrading linux-dtb-legacy-rk35xx (so version 24.5.0-trunk) and after the upgrade (so version 24.5.1). Of course, the second boot fails, but I captured all u-boot and kernel logs. I removed the kernel timestamps in order to make the comparison easier. I then sorted the log files (yes, alphabetic sort), and looked for the lines that are different.
I noticed that the u-boot log is almost the same. The differences are in the kernel logs.
Here are the log lines that are emitted only during the broken boot process:
OF: graph: no port node found in /i2c@feab0000/fusb302@22
OF: graph: no port node found in /i2c@feab0000/fusb302@22/connector
OF: graph: no port node found in /i2c@feab0000/fusb302@22/connector
OF: graph: no port node found in /i2c@feab0000/fusb302@22/connector
...
rk-pcie fe180000.pcie: PCIe Linking... LTSSM is 0x2
And here are the lines that are different (- is for the working boot, and + is for the broken boot):
-RKNPU fdab0000.npu: pvtm=834
+RKNPU fdab0000.npu: pvtm=835
...
-cpu cpu4: pvtm=1707
+cpu cpu4: pvtm=1704
...
-dwmmc_rockchip fe2c0000.mmc: DW MMC controller at irq 92,32 bit host data width,256 deep fifo
+dwmmc_rockchip fe2c0000.mmc: DW MMC controller at irq 91,32 bit host data width,256 deep fifo
...
-dwmmc_rockchip fe2c0000.mmc: Successfully tuned phase to 8
+dwmmc_rockchip fe2c0000.mmc: Successfully tuned phase to 13
...
-feb90000.serial: ttyS6 at MMIO 0xfeb90000 (irq = 104, base_baud = 1500000) is a 16550A
+feb90000.serial: ttyS6 at MMIO 0xfeb90000 (irq = 103, base_baud = 1500000) is a 16550A
...
-pcieport 0002:20:00.0: PME: Signaling with IRQ 192
+pcieport 0002:20:00.0: PME: Signaling with IRQ 191
...
-pcieport 0004:40:00.0: PME: Signaling with IRQ 150
+pcieport 0004:40:00.0: PME: Signaling with IRQ 149
...
-xhci-hcd xhci-hcd.7.auto: irq 139, io mem 0xfcd00000
+xhci-hcd xhci-hcd.7.auto: irq 138, io mem 0xfcd00000
...
-xhci-hcd xhci-hcd.8.auto: irq 140, io mem 0xfc400000
+xhci-hcd xhci-hcd.8.auto: irq 139, io mem 0xfc400000
And, for completeness, here are the log lines that only appear in the working kernel:
EXT4-fs (mmcblk1p2): mounted filesystem with writeback data mode. Opts: (null)
EXT4-fs (mmcblk1p2): re-mounted. Opts: commit=600,errors=remount-ro
...
NET: Registered protocol family 10
...
Segment Routing with IPv6
...
fuse: init (API version 7.32)
...
rk-pcie fe150000.pcie: PCIe Link Fail
...
rk-pcie fe150000.pcie: PCIe Linking... LTSSM is 0x1
rk-pcie fe150000.pcie: failed to initialize host
...
rockchip-pinctrl pinctrl: could not request pin 116 (gpio3-20) from group usbc1-int on device rockchip-pinctrl
rockchip-pinctrl pinctrl: pin gpio3-20 already requested by fe2b0000.spi; cannot claim for 3-0022
rockchip-pinctrl pinctrl: pin-116 (3-0022) status -22
...
spi-nor spi5.0: unrecognized JEDEC id bytes: ff ff ff ff ff ff
spi-nor: probe of spi5.0 failed with error -2
...
typec_fusb302 3-0022: Error applying setting, reverse things back
typec_fusb302: probe of 3-0022 failed with error -22
...
systemd[1]: ...
I still don't know what is going wrong after upgrading linux-dtb-legacy-rk35xx, but I hope this small comparison gives someone a better idea, in order to help me solve this issue.
For reference:
# uname -a
Linux banana-pi-m7-aarch64-1 5.10.160-legacy-rk35xx #1 SMP Wed May 15 03:04:45 UTC 2024 aarch64 aarch64 aarch64 GNU/Linux
# lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy
# armbian-config reports:
# - Armbian 24.5.1 stable
# - Ubuntu jammy based Armbian for the ArmSoM Sige7
# - SoC runs between 408 and 2256 MHz using ondemand governor.