ConnectCore MP15: ethernet works in U-Boot but not built kernel

I’m able to TFTP or NFS boot the kernel coming from my Yocto build.

However, even though it is able to fetch kernel and DTB’s / DTBO’s from NFS, once the kernel actually starts, it is not able to get the ethernet going again and so it fails to get the NFS mount for the rootfs. i.e. U-Boot’s ethernet works, my built kernel’s ethernet doesn’t.

Clues in the log:

a) There’s one line like this about the FDT memory that I don’t quite follow. The raw log suggests that U-Boot was able to fetch the dtbo’s, but I am not sure if they are getting properly deployed for the kernel to access…

ERROR: reserving fdt memory region failed (addr=da000000 size=4000000 flags=4)

b) right before it tries to get to the rootfs, these errors regarding ethernet:

[ 4.146756] stm32-dwmac 5800a000.ethernet: Failed to reset the dma
[ 4.151580] stm32-dwmac 5800a000.ethernet eth0: stmmac_hw_setup: DMA engine initialization failed
[ 4.160596] stm32-dwmac 5800a000.ethernet eth0: stmmac_open: Hw setup failed
[ 4.173258] IP-Config: Failed to open eth0
[ 4.175995] IP-Config: No network devices available


=> dboot linux nfs

## Loading kernel: zImage-ccmp15-dvk.bin
ethernet@5800a000 Waiting for PHY auto negotiation to complete..... done
Using ethernet@5800a000 device
File transfer via NFS from server 192.168.2.5; our IP address is 192.168.2.7
Filename '/exports/nfsroot-ccmp15_dvk//zImage-ccmp15-dvk.bin'.
Load address: 0xc2000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###
done
Bytes transferred = 7666336 (74faa0 hex)

## Loading device tree file in variable 'fdt_file': ccmp157-dvk.dtb
Using ethernet@5800a000 device
File transfer via NFS from server 192.168.2.5; our IP address is 192.168.2.7
Filename '/exports/nfsroot-ccmp15_dvk//ccmp157-dvk.dtb'.
Load address: 0xc4000000
Loading: ####################
done
Bytes transferred = 101594 (18cda hex)

## Applying device tree overlays in variable 'overlays':
Using ethernet@5800a000 device
File transfer via NFS from server 192.168.2.5; our IP address is 192.168.2.7
Filename '/exports/nfsroot-ccmp15_dvk//_ov_board_eth0-10-100_ccmp15-dvk.dtbo'.
Load address: 0xc4400000
Loading: #
done
Bytes transferred = 1460 (5b4 hex)
-> _ov_board_eth0-10-100_ccmp15-dvk.dtbo             DVK: Ethernet 10/100
Using ethernet@5800a000 device
File transfer via NFS from server 192.168.2.5; our IP address is 192.168.2.7
Filename '/exports/nfsroot-ccmp15_dvk//_ov_som_wifi_ccmp15.dtbo'.
Load address: 0xc4400000
Loading: #
done
Bytes transferred = 605 (25d hex)
-> _ov_som_wifi_ccmp15.dtbo                          SOM: Wi-Fi
Using ethernet@5800a000 device
File transfer via NFS from server 192.168.2.5; our IP address is 192.168.2.7
Filename '/exports/nfsroot-ccmp15_dvk//_ov_som_bt_ccmp15.dtbo'.
Load address: 0xc4400000
Loading: #
done
Bytes transferred = 484 (1e4 hex)
-> _ov_som_bt_ccmp15.dtbo                            SOM: Bluetooth

Kernel image @ 0xc2000000 [ 0x000000 - 0x74faa0 ]
## Flattened Device Tree blob at c4000000
   Booting using the fdt blob at 0xc4000000
ERROR: reserving fdt memory region failed (addr=da000000 size=4000000 flags=4)
   Using Device Tree in place at c4000000, end c401bfff
ETZPC: 0x54003000 node disabled, decprot 7=0

Here’s my bitbake banner showing what I’m building from:


bitbake dey-image-qt
NOTE: Started PRServer with DBfile: /home/dey/workspace/ccmp15-dvk-a/cache/prserv.sqlite3, Address: 127.0.0.1:39017, PID: 3202864
Loading cache: 100% |############################################################################################################################| Time: 0:00:00
Loaded 4150 entries from dependency cache.
Parsing recipes: 100% |##########################################################################################################################| Time: 0:00:01
Parsing of 2703 .bb files complete (2689 cached, 14 parsed). 4167 targets, 341 skipped, 4 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION           = "2.0.0"
BUILD_SYS            = "x86_64-linux"
NATIVELSBSTRING      = "universal"
TARGET_SYS           = "arm-dey-linux-gnueabi"
MACHINE              = "ccmp15-dvk"
DISTRO               = "dey"
DISTRO_VERSION       = "4.0-r1"
TUNE_FEATURES        = "arm vfp cortexa7 neon vfpv4 thumb callconvention-hard"
TARGET_FPU           = "hard"
meta                 
meta-poky            
meta-yocto-bsp       = "HEAD:86e9630511321530ba6f19ebedbaebad1a89a89f"
meta-oe              
meta-python          
meta-networking      
meta-webserver       = "HEAD:278ec081a64e6a7679d6def550101158126cd935"
meta-qt5             = "HEAD:44d44933200287f7d17cf6981af4b4a0961c308d"
meta-swupdate        = "HEAD:91de63c006e886eba8d9c263c9aa55d4c7632072"
meta-webkit          = "HEAD:ff5ab70d54ad250f57328d6e7c2c37b9ceaf3748"
meta-timesys         = "HEAD:4d03b3bd68eb3df01ce99935e1e2939b53eb8ad4"
meta-st-stm32mp      = "HEAD:1becb4e422555dc9735c65cc0a0f0d2d534bcc43"
meta-digi-arm        
meta-digi-dey        = "HEAD:fbc92e45b3d19ca0313f80245a1d5574eb69ff3a"

I tried pruning the DTBO overlays list to just the one for the ethernet, I still see that error about the FDT size though.


## Loading kernel: zImage-ccmp15-dvk.bin
ethernet@5800a000 Waiting for PHY auto negotiation to complete...... done
Using ethernet@5800a000 device
File transfer via NFS from server 192.168.2.5; our IP address is 192.168.2.7
Filename '/exports/nfsroot-ccmp15_dvk//zImage-ccmp15-dvk.bin'.
Load address: 0xc2000000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###
done
Bytes transferred = 7666336 (74faa0 hex)

## Loading device tree file in variable 'fdt_file': ccmp157-dvk.dtb
Using ethernet@5800a000 device
File transfer via NFS from server 192.168.2.5; our IP address is 192.168.2.7
Filename '/exports/nfsroot-ccmp15_dvk//ccmp157-dvk.dtb'.
Load address: 0xc4000000
Loading: ####################
done
Bytes transferred = 101594 (18cda hex)

## Applying device tree overlays in variable 'overlays':
Using ethernet@5800a000 device
File transfer via NFS from server 192.168.2.5; our IP address is 192.168.2.7
Filename '/exports/nfsroot-ccmp15_dvk//_ov_board_eth0-10-100_ccmp15-dvk.dtbo'.
Load address: 0xc4400000
Loading: #
done
Bytes transferred = 1460 (5b4 hex)
-> _ov_board_eth0-10-100_ccmp15-dvk.dtbo             DVK: Ethernet 10/100

Kernel image @ 0xc2000000 [ 0x000000 - 0x74faa0 ]
## Flattened Device Tree blob at c4000000
   Booting using the fdt blob at 0xc4000000
ERROR: reserving fdt memory region failed (addr=da000000 size=4000000 flags=4)
   Using Device Tree in place at c4000000, end c401cfff
Unable to update property /wireless:mac-address, err=FDT_ERR_NOTFOUND
Unable to update property /bluetooth:mac-address, err=FDT_ERR_NOTFOUND
ETZPC: 0x54003000 node disabled, decprot 7=0

Starting kernel ...

Answered via tech Support but posting here for others:
you are loading overlay for the 10/100 Ethernet PHY (_ov_board_eth0-10-100_ccmp15-dvk.dtbo), however this 10/100 Ethernet PHY is not mounted in our DVK by default).

By default is mounted and configured the 10/100/1000 Gigabit Ethernet PHY and it is working fine in our DVK booting from NFS.

Please remove the overlay for the 10/100 Ethernet PHY and try to boot it again.

Yep, this was the problem.

I also found that for my Ubuntu 22.04.1 LTS laptop, the DVK board couldn’t even do the first kernel/DTB fetch until I configured the NFS server to allow UDP as well as TCP. (i.e. find nfs.conf and set udp=y)