This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM6442: ICSSG ethernet driver crash intermittent similar to 1158425

Part Number: AM6442
Other Parts Discussed in Thread: AM6421, DP83869, DP83869HM

I'm having the same issue as [1] on am64 EVM  with my own built image using kernel from [2] with tag tag: 09.00.00.005-rt very close to the kernel in ti-processor-sdk-linux-rt-am64xx-evm-09.00.00.03.  I have a a single device tree that sets icssg for DUAL emac mode.

What was the resolution for TI ticket 1158425?

Seems like a race condition when the driver comes up in DUAL emac mode with RX descriptor allocation? 

I would attempt to reproduce with AM64EVM and  ti-processor-sdk-linux-rt-am64xx-evm-09.00.00.03 image, but I can't get into dual emac mode when using the the command mentioned here [3]

setenv bootcmd 'run findfdt; run envboot; run init_${boot}; run get_kern_${boot}; run get_fdt_${boot}; setenv name_overlays k3-am642-evm-icssg1-dualemac.dtbo; run get_overlay_${boot}; run run_kern'

[1] https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1158425/am6548-icssg-ethernet-driver-crash

[2]  git.ti.com/.../ti-linux-kernel.git

[3] https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1137215/tmds64gpevm-eth1-port-is-cpsw-instead-of-prueth

Here is a simple bash script I use to recreate the problem (tune sleep for how long it takes system to reboot): 

#!/bin/bash

while [ true ] ;  do 
  ping -c 1 -w 1 192.168.0.1 > /dev/null 2>&1
  a=$?
  if [ $a == 0 ]
  then
    echo "target reboot"
    ssh -i ~/key root@192.168.0.1 reboot > /dev/null 2>&1
    sleep 30
  else
    echo "Not answering pings!"
    exit
  fi
done

Here is a kernel crash dump when I take down eth0 when  in the "hung" state:

~ # ifconfig eth1 down
[  600.643551] icssg-prueth icssg1-eth eth1: Link is Down
[  600.644774] remoteproc remoteproc6: stopped remote processor 3008a000.txpru
[  600.644795] remoteproc remoteproc5: stopped remote processor 30084000.rtu
[  600.644806] remoteproc remoteproc4: stopped remote processor 300b4000.pru
[  600.655987] ----------{}[ cut here ]{}----------
[  600.656001] k3_knav_desc_pool size 65536 != avail 0
[  600.656069] WARNING: CPU: 0 PID: 507 at drivers/net/ethernet/ti/k3-cppi-desc-pool.c:35 k3_cppi_desc_pool_destroy+0x90/0x98
[  600.656104] CPU: 0 PID: 507 Comm: ifconfig Not tainted 5.10.158-rt64 #1
[  600.656115] Hardware name: Sick SIG300 (DT)
[  600.656121] pstate: 40000005 (nZcv daif PAN -UAO -TCO BTYPE=-)
[  600.656129] pc : k3_cppi_desc_pool_destroy+0x90/0x98
[  600.656139] lr : k3_cppi_desc_pool_destroy+0x90/0x98
[  600.656148] sp : ffff800014f7ba50
[  600.656151] x29: ffff800014f7ba50 x28: ffff000004683900
[  600.656164] x27: ffff0000021b7600 x26: 0000000000000001
[  600.656171] x25: 00000000000001d0 x24: ffff0000034a6c80
[  600.656179] x23: ffff00000223c980 x22: 0000000000000001
[  600.656187] x21: ffff00000223c000 x20: 0000000000010000
[  600.656194] x19: ffff0000038fdb80 x18: 0000000000000000
[  600.656202] x17: 0000000000000001 x16: 0000000000000019
[  600.656209] x15: ffffffffffffffff x14: ffff800010c2ad98
[  600.656217] x13: ffff800010f7fb20 x12: ffff800010f7fb1e
[  600.656224] x11: ffff800014f7b9a0 x10: ffff800010e4c910
[  600.656232] x9 : ffff800014f7ba50 x8 : ffff800010e44ae8
[  600.656240] x7 : ffff800014f7b8a0 x6 : ffff800010e9cbf0
[  600.656248] x5 : ffff800014f7b8a0 x4 : 00000000fffff16c
[  600.656255] x3 : ffff800010e9ee10 x2 : 0000000100000000
[  600.656262] x1 : 69084cd70e971900 x0 : 0000000000000000
[  600.656272] Call trace:
[  600.656276]  k3_cppi_desc_pool_destroy+0x90/0x98
[  600.656286]  prueth_cleanup_rx_chns.isra.37+0x1c/0x38
[  600.656300]  emac_ndo_stop+0x218/0x2c8
[  600.656309]  __dev_close_many+0xac/0x130
[  600.656318]  __dev_change_flags+0xd4/0x208
[  600.656330]  dev_change_flags+0x24/0x68
[  600.656338]  devinet_ioctl+0x3f0/0x798
[  600.656347]  inet_ioctl+0x1fc/0x378
[  600.656355]  sock_do_ioctl+0x4c/0x2c8
[  600.656363]  sock_ioctl+0x310/0x4a8
[  600.656369]  __arm64_sys_ioctl+0xa8/0xe8
[  600.656383]  el0_svc_common.constprop.4+0x8c/0x180
[  600.656396]  do_el0_svc+0x24/0x90
[  600.656404]  el0_svc+0x14/0x20
[  600.656415]  el0_sync_handler+0x90/0xb8
[  600.656424]  el0_sync+0x160/0x180
[  600.656433] -{}[ end trace 0000000000000002 ]{}-
[  601.881295] ----------{}[ cut here ]{}----------
[  601.881312] kernel BUG at lib/genalloc.c:254!
[  602.881539] Internal error: Oops - BUG: 0 1 PREEMPT_RT SMP
[  602.896223] CPU: 0 PID: 507 Comm: ifconfig Tainted: G        W         5.10.158-rt64 #1
[  602.904212] Hardware name: Sick SIG300 (DT)
[  602.908383] pstate: 20000005 (nzCv daif PAN -UAO -TCO BTYPE=-)
[  602.914378] pc : gen_pool_destroy+0xac/0xe0
[  602.918569] lr : gen_pool_destroy+0xa4/0xe0
[  602.922744] sp : ffff800014f7ba00
[  602.926046] x29: ffff800014f7ba00 x28: ffff000004683900
[  602.931353] x27: ffff0000021b7600 x26: ffff0000038ec000
[  602.936655] x25: dead000000000100 x24: dead000000000122
[  602.941956] x23: 0000000000000007 x22: ffff0000038ec040
[  602.947258] x21: ffff0000038ec040 x20: 0000000000000200
[  602.952559] x19: ffff8000118d5000 x18: 0000000000000000
[  602.957860] x17: 0000000000000001 x16: 0000000000000019
[  602.963161] x15: ffffffffffffffff x14: ffff800010c2ad98
[  602.968462] x13: ffff800010f7fb20 x12: ffff800010f7fb1e
[  602.973764] x11: ffff800014f7b9a0 x10: ffff800010e4c910
[  602.979066] x9 : ffff800014f7ba50 x8 : ffff800010e44ae8
[  602.984367] x7 : 0000000000000020 x6 : ffffffffffffffff
[  602.989667] x5 : 0000000000000000 x4 : 0000000000000000
[  602.994967] x3 : 0000000000000000 x2 : 0000000000000000
[  603.000268] x1 : 0000000000000000 x0 : 0000000000000000
[  603.005569] Call trace:
[  603.008006]  gen_pool_destroy+0xac/0xe0
[  603.011836]  k3_cppi_desc_pool_destroy+0x54/0x98
[  603.016452]  prueth_cleanup_rx_chns.isra.37+0x1c/0x38
[  603.021498]  emac_ndo_stop+0x218/0x2c8
[  603.025240]  __dev_close_many+0xac/0x130
[  603.029157]  __dev_change_flags+0xd4/0x208
[  603.033248]  dev_change_flags+0x24/0x68
[  603.037078]  devinet_ioctl+0x3f0/0x798
[  603.040821]  inet_ioctl+0x1fc/0x378
[  603.044302]  sock_do_ioctl+0x4c/0x2c8
[  603.047958]  sock_ioctl+0x310/0x4a8
[  603.051436]  __arm64_sys_ioctl+0xa8/0xe8
[  603.055357]  el0_svc_common.constprop.4+0x8c/0x180
[  603.060143]  do_el0_svc+0x24/0x90
[  603.063452]  el0_svc+0x14/0x20
[  603.066504]  el0_sync_handler+0x90/0xb8
[  603.070331]  el0_sync+0x160/0x180
[  603.073648] Code: aa1403e1 97ffbe82 eb00029f 54fffd29 (d4210000)
[  603.079735] -{}[ end trace 0000000000000003 ]{}-
[  604.079911] printk: enabled sync mode
[  604.088226] Kernel panic - not syncing:
[  604.092048] Oops - BUG: Fatal exception
[  604.092129] Kernel Offset: disabled
[  604.099425] CPU features: 0x00040002,2000200c
[  604.103771] Memory Limit: none
[  604.106818] Rebooting in 60 seconds..

  • The above traceback is from an older run on our own hardware.

    Here is a traceback run on the AM64EVM with a modified device tree that has only dual pru eth at eth0, eth1.  There are no cpsw eth ports.  The traceback is from taking down the eth0 port once the eth0 port is "hung" no longer responding to pings.  eth1 continues to operate.  Using the script given above, it took about 750 reboot cycles to get into this hung state.  Using flood ping (ping -f) at booth eth0 and eth1, while running the reboot script.

    ~ # ifconfig eth1
    eth1 Link encap:Ethernet HWaddr 00:06:77:00:00:09
    inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:147470771 errors:0 dropped:0 overruns:0 frame:0
    TX packets:147470771 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:14452032768 (13.4 GiB) TX bytes:14451984078 (13.4 GiB)

    ~ # ifconfig eth0
    eth0 Link encap:Ethernet HWaddr 00:06:77:00:00:08
    inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    RX packets:0 errors:0 dropped:0 overruns:0 frame:0
    TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
    collisions:0 txqueuelen:1000
    RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)

    ~ # dmesg|grep -i emac
    [ 3.255731] icssg-prueth icssg1-eth: TI PRU ethernet driver initialized: dual EMAC mode

    ~ # uname -a
    Linux am64x 6.1.33-rt11 #1 SMP PREEMPT_RT Wed Nov 15 22:20:12 UTC 2023 aarch64 GNU/Linux


    ~ # ifconfig eth0 down
    [47831.731317] icssg-prueth icssg1-eth eth0: Link is Down
    [47831.733069] remoteproc remoteproc12: stopped remote processor 3008a000.txpru
    30084000.rtu] remoteproc remoteproc11: stopped remote processor

    [47831.733090] remoteproc remoteproc11: stopped remote processor 30084000.rtu
    [47831.733100] remoteproc remoteproc10: stopped remote processor 300b4000.pru
    [47831.747655] ------------[ cut here ]------------
    [47831.747675] k3_knav_desc_pool size 65536 != avail 0
    [47831.747748] WARNING: CPU: 1 PID: 523 at drivers/net/ethernet/ti/k3-cppi-desc-pool.c:35 k3_cppi_desc_pool_destroy+0x90/0x98
    [47831.747786] CPU: 1 PID: 523 Comm: ifconfig Not tainted 6.1.33-rt11 #1
    [47831.747795] Hardware name: Texas Instruments AM642 EVM (DT)
    [47831.747802] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [47831.747811] pc : k3_cppi_desc_pool_destroy+0x90/0x98
    [47831.747822] lr : k3_cppi_desc_pool_destroy+0x90/0x98
    [47831.747832] sp : ffff80000cfbba70
    [47831.747835] x29: ffff80000cfbba70 x28: ffff0000048b3900 x27: ffff0000003ba800
    [47831.747851] x26: ffff000003908000 x25: 0000000000000041 x24: ffff000003909480
    [47831.747862] x23: ffff000003997480 x22: ffff000003908000 x21: ffff000003909400
    [47831.747874] x20: 0000000000010000 x19: ffff00000481b080 x18: 0000000000000000
    [47831.747885] x17: 0000000000000000 x16: 0000000000000000 x15: ffffffffffffffff
    [47831.747897] x14: ffff800008cd6ab8 x13: ffff80000901a890 x12: ffff80000901a88e
    [47831.747908] x11: 656820747563205b x10: 2d2d2d2d2d2d2d2d x9 : ffff80000cfbba70
    [47831.747921] x8 : ffff800008edf6d0 x7 : ffff80000cfbb870 x6 : ffff800008f377a8
    [47831.747932] x5 : ffff80000cfbb870 x4 : 00000000fffff18b x3 : ffff800008f39cb0
    [47831.747944] x2 : 0000000100000000 x1 : c3f3922ed985bc00 x0 : 0000000000000000
    [47831.747956] Call trace:
    [47831.747959] k3_cppi_desc_pool_destroy+0x90/0x98
    [47831.747970] prueth_cleanup_rx_chns.isra.54+0x30/0x50
    [47831.747983] emac_ndo_stop+0x210/0x250
    [47831.747994] __dev_close_many+0xa4/0x140
    [47831.748005] __dev_change_flags+0xd4/0x208
    [47831.748014] dev_change_flags+0x24/0x68
    [47831.748021] devinet_ioctl+0x3f0/0x7b0
    [47831.748032] inet_ioctl+0x160/0x200
    [47831.748041] sock_do_ioctl+0x4c/0xf8
    [47831.748052] sock_ioctl+0x250/0x330
    [47831.748060] __arm64_sys_ioctl+0xa8/0xe8
    [47831.748071] invoke_syscall+0x44/0x108
    [47831.748085] el0_svc_common.constprop.3+0x94/0xf8
    [47831.748095] do_el0_svc+0x2c/0xc8
    [47831.748105] el0_svc+0x20/0x50
    [47831.748118] el0t_64_sync_handler+0x98/0xc0
    [47831.748128] el0t_64_sync+0x170/0x174
    [47831.748138] ---[ end trace 0000000000000000 ]---
    [47831.748305] ------------[ cut here ]------------
    [47831.748312] kernel BUG at lib/genalloc.c:255!
    [47831.748320] Internal error: Oops - BUG: 00000000f2000800 [#1] PREEMPT_RT SMP
    [47831.748331] CPU: 1 PID: 523 Comm: ifconfig Tainted: G W 6.1.33-rt11 #1
    [47831.748339] Hardware name: Texas Instruments AM642 EVM (DT)
    [47831.748343] pstate: 20000005 (nzCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [47831.748352] pc : gen_pool_destroy+0xa8/0xd8
    [47831.748368] lr : gen_pool_destroy+0xa0/0xd8
    [47831.748379] sp : ffff80000cfbba20
    [47831.748383] x29: ffff80000cfbba20 x28: ffff0000048b3900 x27: ffff0000003ba800
    [47831.748396] x26: ffff000004391a80 x25: dead000000000100 x24: dead000000000122
    [47831.748407] x23: 0000000000000007 x22: ffff000004391ab0 x21: ffff000004391ab0
    [47831.748419] x20: 0000000000000200 x19: ffff80000977d000 x18: 0000000000000000
    [47831.748430] x17: 0000000000000000 x16: 0000000000000000 x15: ffffffffffffffff
    [47831.748441] x14: ffff800008cd6ab8 x13: ffff80000901a890 x12: ffff80000901a88e
    [47831.748453] x11: 656820747563205b x10: 2d2d2d2d2d2d2d2d x9 : ffff80000cfbba70
    [47831.748464] x8 : ffff800008edf6d0 x7 : 0000000000000020 x6 : 0000000000000010
    [47831.748475] x5 : ffff0000000eec18 x4 : ffff80000977d040 x3 : 0000000000000000
    [47831.748487] x2 : 0000000000000000 x1 : 0000000000000200 x0 : 0000000000000000
    [47831.748498] Call trace:
    [47831.748500] gen_pool_destroy+0xa8/0xd8
    [47831.748512] k3_cppi_desc_pool_destroy+0x54/0x98
    [47831.748525] prueth_cleanup_rx_chns.isra.54+0x30/0x50
    [47831.748536] emac_ndo_stop+0x210/0x250
    [47831.748547] __dev_close_many+0xa4/0x140
    [47831.748556] __dev_change_flags+0xd4/0x208
    [47831.748565] dev_change_flags+0x24/0x68
    [47831.748572] devinet_ioctl+0x3f0/0x7b0
    [47831.748582] inet_ioctl+0x160/0x200
    [47831.748592] sock_do_ioctl+0x4c/0xf8
    [47831.748601] sock_ioctl+0x250/0x330
    [47831.748610] __arm64_sys_ioctl+0xa8/0xe8
    [47831.748619] invoke_syscall+0x44/0x108
    [47831.748631] el0_svc_common.constprop.3+0x94/0xf8
    [47831.748642] do_el0_svc+0x2c/0xc8
    [47831.748651] el0_svc+0x20/0x50
    [47831.748663] el0t_64_sync_handler+0x98/0xc0
    [47831.748674] el0t_64_sync+0x170/0x174
    [47831.748687] Code: aa1403e1 97ffbe2f eb00029f 54fffd49 (d4210000)
    [47831.748698] ---[ end trace 0000000000000000 ]---
    [47831.748703] Kernel panic - not syncing: Oops - BUG: Fatal exception
    [47832.173001] SMP: stopping secondary CPUs
    [47832.173027] Kernel Offset: disabled
    [47832.173030] CPU features: 0x00000,00800084,0000420b
    [47832.173039] Memory Limit: none

  • Here is the device tree I'm using.  Note the #define  DUAL_PRU_EMAC:

    // SPDX-License-Identifier: GPL-2.0
    /*
     * Copyright (C) 2020-2021 Texas Instruments Incorporated - https://www.ti.com/
     */
    
    /dts-v1/;
    
    #include <dt-bindings/phy/phy.h>
    #include <dt-bindings/mux/ti-serdes.h>
    #include <dt-bindings/leds/common.h>
    #include <dt-bindings/gpio/gpio.h>
    #include <dt-bindings/net/ti-dp83867.h>
    #include "k3-am642.dtsi"
    
    / {
    	compatible = "ti,am642-evm", "ti,am642";
    	model = "Texas Instruments AM642 EVM";
    
    	chosen {
    		stdout-path = "serial2:115200n8";
    		bootargs = "console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000";
    	};
    
            aliases {
                    ethernet1 = "/icssg1-eth/ethernet-ports/port@0";
                    ethernet2 = "/icssg1-eth/ethernet-ports/port@1";
            };
    
    
    	memory@80000000 {
    		device_type = "memory";
    		/* 2G RAM */
    		reg = <0x00000000 0x80000000 0x00000000 0x80000000>;
    
    	};
    
    	reserved-memory {
    		#address-cells = <2>;
    		#size-cells = <2>;
    		ranges;
    
    		secure_ddr: optee@9e800000 {
    			reg = <0x00 0x9e800000 0x00 0x01800000>; /* for OP-TEE */
    			alignment = <0x1000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_dma_memory_region: r5f-dma-memory@a0000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core0_memory_region: r5f-memory@a0100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa0100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_dma_memory_region: r5f-dma-memory@a1000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss0_core1_memory_region: r5f-memory@a1100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa1100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_dma_memory_region: r5f-dma-memory@a2000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core0_memory_region: r5f-memory@a2100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa2100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_dma_memory_region: r5f-dma-memory@a3000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3000000 0x00 0x100000>;
    			no-map;
    		};
    
    		main_r5fss1_core1_memory_region: r5f-memory@a3100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa3100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		mcu_m4fss_dma_memory_region: m4f-dma-memory@a4000000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4000000 0x00 0x100000>;
    			no-map;
    		};
    
    		mcu_m4fss_memory_region: m4f-memory@a4100000 {
    			compatible = "shared-dma-pool";
    			reg = <0x00 0xa4100000 0x00 0xf00000>;
    			no-map;
    		};
    
    		rtos_ipc_memory_region: ipc-memories@a5000000 {
    			reg = <0x00 0xa5000000 0x00 0x00800000>;
    			alignment = <0x1000>;
    			no-map;
    		};
    	};
    
    	evm_12v0: fixedregulator-evm12v0 {
    		/* main DC jack */
    		compatible = "regulator-fixed";
    		regulator-name = "evm_12v0";
    		regulator-min-microvolt = <12000000>;
    		regulator-max-microvolt = <12000000>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vsys_5v0: fixedregulator-vsys5v0 {
    		/* output of LM5140 */
    		compatible = "regulator-fixed";
    		regulator-name = "vsys_5v0";
    		regulator-min-microvolt = <5000000>;
    		regulator-max-microvolt = <5000000>;
    		vin-supply = <&evm_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vsys_3v3: fixedregulator-vsys3v3 {
    		/* output of LM5140 */
    		compatible = "regulator-fixed";
    		regulator-name = "vsys_3v3";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&evm_12v0>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	vdd_mmc1: fixed-regulator-sd {
    		/* TPS2051BD */
    		compatible = "regulator-fixed";
    		regulator-name = "vdd_mmc1";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		regulator-boot-on;
    		enable-active-high;
    		vin-supply = <&vsys_3v3>;
    		gpio = <&exp1 6 GPIO_ACTIVE_HIGH>;
    	};
    
    	vddb: fixedregulator-vddb {
    		compatible = "regulator-fixed";
    		regulator-name = "vddb_3v3_display";
    		regulator-min-microvolt = <3300000>;
    		regulator-max-microvolt = <3300000>;
    		vin-supply = <&vsys_3v3>;
    		regulator-always-on;
    		regulator-boot-on;
    	};
    
    	leds {
    		compatible = "gpio-leds";
    
    		led-0 {
    			label = "am64-evm:red:heartbeat";
    			gpios = <&exp1 16 GPIO_ACTIVE_HIGH>;
    			linux,default-trigger = "heartbeat";
    			function = LED_FUNCTION_HEARTBEAT;
    			default-state = "off";
    		};
    	};
    
    	mdio_mux: mux-controller {
    		compatible = "gpio-mux";
    		#mux-control-cells = <0>;
    
    		mux-gpios = <&exp1 12 GPIO_ACTIVE_LOW>;
    	};
    #define DUAL_PRU_EMAC
    #ifndef DUAL_PRU_EMAC
    	mdio_mux_1: mdio-mux-1 {
    		compatible = "mdio-mux-multiplexer";
    		mux-controls = <&mdio_mux>;
    		mdio-parent-bus = <&cpsw3g_mdio>;
    		#address-cells = <1>;
    		#size-cells = <0>;
    
    		mdio@1 {
    			reg = <0x1>;
    			#address-cells = <1>;
    			#size-cells = <0>;
    
    			cpsw3g_phy3: ethernet-phy@3 {
    				reg = <3>;
    				tx-internal-delay-ps = <250>;
    				rx-internal-delay-ps = <2000>;
    			};
    		};
    	};
    
    #else
            mdio-mux-2 {
                    compatible = "mdio-mux-multiplexer";
                    mux-controls = <&mdio_mux>;
                    mdio-parent-bus = <&icssg1_mdio>;
                    #address-cells = <1>;
                    #size-cells = <0>;
    
                    mdio@0 {
                            reg = <0x0>;
                            #address-cells = <1>;
                            #size-cells = <0>;
    
                            icssg1_phy2: ethernet-phy@3 {
                                    reg = <3>;
                            };
                    };
            };
    #endif
    
    	transceiver1: can-phy0 {
    		compatible = "ti,tcan1042";
    		#phy-cells = <0>;
    		max-bitrate = <5000000>;
    		standby-gpios = <&exp1 8 GPIO_ACTIVE_HIGH>;
    	};
    
    	transceiver2: can-phy1 {
    		compatible = "ti,tcan1042";
    		#phy-cells = <0>;
    		max-bitrate = <5000000>;
    		standby-gpios = <&exp1 9 GPIO_ACTIVE_HIGH>;
    	};
    
    	icssg1_eth: icssg1-eth {
    		compatible = "ti,am642-icssg-prueth";
    		pinctrl-names = "default";
    		pinctrl-0 = <&icssg1_rgmii1_pins_default>;
    
    		sram = <&oc_sram>;
    		ti,prus = <&pru1_0>, <&rtu1_0>, <&tx_pru1_0>, <&pru1_1>, <&rtu1_1>, <&tx_pru1_1>;
    		firmware-name = "ti-pruss/am65x-sr2-pru0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-rtu0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-txpru0-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-pru1-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-rtu1-prueth-fw.elf",
    				"ti-pruss/am65x-sr2-txpru1-prueth-fw.elf";
    
    		ti,pruss-gp-mux-sel = <2>,	/* MII mode */
    				      <2>,
    				      <2>,
    				      <2>,	/* MII mode */
    				      <2>,
    				      <2>;
    
    		ti,mii-g-rt = <&icssg1_mii_g_rt>;
    		ti,mii-rt = <&icssg1_mii_rt>;
    		ti,pa-stats = <&icssg1_pa_stats>;
    		iep = <&icssg1_iep0>,  <&icssg1_iep1>;
    
    		interrupt-parent = <&icssg1_intc>;
    		interrupts = <24 0 2>, <25 1 3>;
    		interrupt-names = "tx_ts0", "tx_ts1";
    
    		dmas = <&main_pktdma 0xc200 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc201 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc202 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc203 15>, /* egress slice 0 */
    		       <&main_pktdma 0xc204 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc205 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc206 15>, /* egress slice 1 */
    		       <&main_pktdma 0xc207 15>, /* egress slice 1 */
    		       <&main_pktdma 0x4200 15>, /* ingress slice 0 */
    		       <&main_pktdma 0x4201 15>, /* ingress slice 1 */
    		       <&main_pktdma 0x4202 0>, /* mgmnt rsp slice 0 */
    		       <&main_pktdma 0x4203 0>; /* mgmnt rsp slice 1 */
    		dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3",
    			    "tx1-0", "tx1-1", "tx1-2", "tx1-3",
    			    "rx0", "rx1";
    
    		ethernet-ports {
    			#address-cells = <1>;
    			#size-cells = <0>;
    			icssg1_emac0: port@0 {
    				reg = <0>;
    				phy-handle = <&icssg1_phy1>;
    				phy-mode = "rgmii-id";
    				ti,syscon-rgmii-delay = <&main_conf 0x4110>;
    				/* Filled in by bootloader */
    				local-mac-address = [00 00 00 00 00 00];
    			};
    			icssg1_emac1: port@1 {
    				reg = <1>;
    				ti,syscon-rgmii-delay = <&main_conf 0x4114>;
    				/* Filled in by bootloader */
    				local-mac-address = [00 00 00 00 00 00];
    				status = "disabled";
    			};
    		};
    	};
    };
    
    &main_pmx0 {
    	main_mmc1_pins_default: main-mmc1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0294, PIN_INPUT_PULLUP, 0) /* (J19) MMC1_CMD */
    			AM64X_IOPAD(0x028c, PIN_INPUT_PULLDOWN, 0) /* (L20) MMC1_CLK */
    			AM64X_IOPAD(0x0288, PIN_INPUT_PULLUP, 0) /* (K21) MMC1_DAT0 */
    			AM64X_IOPAD(0x0284, PIN_INPUT_PULLUP, 0) /* (L21) MMC1_DAT1 */
    			AM64X_IOPAD(0x0280, PIN_INPUT_PULLUP, 0) /* (K19) MMC1_DAT2 */
    			AM64X_IOPAD(0x027c, PIN_INPUT_PULLUP, 0) /* (K18) MMC1_DAT3 */
    			AM64X_IOPAD(0x0298, PIN_INPUT_PULLUP, 0) /* (D19) MMC1_SDCD */
    			AM64X_IOPAD(0x029c, PIN_INPUT, 0) /* (C20) MMC1_SDWP */
    			AM64X_IOPAD(0x0290, PIN_INPUT, 0) /* MMC1_CLKLB */
    		>;
    	};
    
    	main_uart0_pins_default: main-uart0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0238, PIN_INPUT, 0) /* (B16) UART0_CTSn */
    			AM64X_IOPAD(0x023c, PIN_OUTPUT, 0) /* (A16) UART0_RTSn */
    			AM64X_IOPAD(0x0230, PIN_INPUT, 0) /* (D15) UART0_RXD */
    			AM64X_IOPAD(0x0234, PIN_OUTPUT, 0) /* (C16) UART0_TXD */
    		>;
    	};
    
    	main_spi0_pins_default: main-spi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0210, PIN_INPUT, 0) /* (D13) SPI0_CLK */
    			AM64X_IOPAD(0x0208, PIN_OUTPUT, 0) /* (D12) SPI0_CS0 */
    			AM64X_IOPAD(0x0214, PIN_OUTPUT, 0) /* (A13) SPI0_D0 */
    			AM64X_IOPAD(0x0218, PIN_INPUT, 0) /* (A14) SPI0_D1 */
    		>;
    	};
    
    	main_i2c1_pins_default: main-i2c1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0268, PIN_INPUT_PULLUP, 0) /* (C18) I2C1_SCL */
    			AM64X_IOPAD(0x026c, PIN_INPUT_PULLUP, 0) /* (B19) I2C1_SDA */
    		>;
    	};
    
    	mdio1_pins_default: mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01fc, PIN_OUTPUT, 4) /* (R2) PRG0_PRU1_GPO19.MDIO0_MDC */
    			AM64X_IOPAD(0x01f8, PIN_INPUT, 4) /* (P5) PRG0_PRU1_GPO18.MDIO0_MDIO */
    		>;
    	};
    
    	rgmii1_pins_default: rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x01cc, PIN_INPUT, 4) /* (W5) PRG0_PRU1_GPO7.RGMII1_RD0 */
    			AM64X_IOPAD(0x01d4, PIN_INPUT, 4) /* (Y5) PRG0_PRU1_GPO9.RGMII1_RD1 */
    			AM64X_IOPAD(0x01d8, PIN_INPUT, 4) /* (V6) PRG0_PRU1_GPO10.RGMII1_RD2 */
    			AM64X_IOPAD(0x01f4, PIN_INPUT, 4) /* (V5) PRG0_PRU1_GPO17.RGMII1_RD3 */
    			AM64X_IOPAD(0x0188, PIN_INPUT, 4) /* (AA5) PRG0_PRU0_GPO10.RGMII1_RXC */
    			AM64X_IOPAD(0x0184, PIN_INPUT, 4) /* (W6) PRG0_PRU0_GPO9.RGMII1_RX_CTL */
    			AM64X_IOPAD(0x0124, PIN_OUTPUT, 4) /* (V15) PRG1_PRU1_GPO7.RGMII1_TD0 */
    			AM64X_IOPAD(0x012c, PIN_OUTPUT, 4) /* (V14) PRG1_PRU1_GPO9.RGMII1_TD1 */
    			AM64X_IOPAD(0x0130, PIN_OUTPUT, 4) /* (W14) PRG1_PRU1_GPO10.RGMII1_TD2 */
    			AM64X_IOPAD(0x014c, PIN_OUTPUT, 4) /* (AA14) PRG1_PRU1_GPO17.RGMII1_TD3 */
    			AM64X_IOPAD(0x00e0, PIN_OUTPUT, 4) /* (U14) PRG1_PRU0_GPO10.RGMII1_TXC */
    			AM64X_IOPAD(0x00dc, PIN_OUTPUT, 4) /* (U15) PRG1_PRU0_GPO9.RGMII1_TX_CTL */
    		>;
    	};
    
           rgmii2_pins_default: rgmii2-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0108, PIN_INPUT, 4) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
    			AM64X_IOPAD(0x010c, PIN_INPUT, 4) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
    			AM64X_IOPAD(0x0110, PIN_INPUT, 4) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
    			AM64X_IOPAD(0x0114, PIN_INPUT, 4) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
    			AM64X_IOPAD(0x0120, PIN_INPUT, 4) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
    			AM64X_IOPAD(0x0118, PIN_INPUT, 4) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
    			AM64X_IOPAD(0x0134, PIN_OUTPUT, 4) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
    			AM64X_IOPAD(0x0138, PIN_OUTPUT, 4) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
    			AM64X_IOPAD(0x013c, PIN_OUTPUT, 4) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
    			AM64X_IOPAD(0x0140, PIN_OUTPUT, 4) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
    			AM64X_IOPAD(0x0148, PIN_OUTPUT, 4) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
    			AM64X_IOPAD(0x0144, PIN_OUTPUT, 4) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
    		>;
    	};
    
    	main_usb0_pins_default: main-usb0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x02a8, PIN_OUTPUT, 0) /* (E19) USB0_DRVVBUS */
    		>;
    	};
    
    	ospi0_pins_default: ospi0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0000, PIN_OUTPUT, 0) /* (N20) OSPI0_CLK */
    			AM64X_IOPAD(0x002c, PIN_OUTPUT, 0) /* (L19) OSPI0_CSn0 */
    			AM64X_IOPAD(0x000c, PIN_INPUT, 0) /* (M19) OSPI0_D0 */
    			AM64X_IOPAD(0x0010, PIN_INPUT, 0) /* (M18) OSPI0_D1 */
    			AM64X_IOPAD(0x0014, PIN_INPUT, 0) /* (M20) OSPI0_D2 */
    			AM64X_IOPAD(0x0018, PIN_INPUT, 0) /* (M21) OSPI0_D3 */
    			AM64X_IOPAD(0x001c, PIN_INPUT, 0) /* (P21) OSPI0_D4 */
    			AM64X_IOPAD(0x0020, PIN_INPUT, 0) /* (P20) OSPI0_D5 */
    			AM64X_IOPAD(0x0024, PIN_INPUT, 0) /* (N18) OSPI0_D6 */
    			AM64X_IOPAD(0x0028, PIN_INPUT, 0) /* (M17) OSPI0_D7 */
    			AM64X_IOPAD(0x0008, PIN_INPUT, 0) /* (N19) OSPI0_DQS */
    		>;
    	};
    
    	main_ecap0_pins_default: main-ecap0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0270, PIN_INPUT, 0) /* (D18) ECAP0_IN_APWM_OUT */
    		>;
    	};
    
    	main_mcan0_pins_default: main-mcan0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0254, PIN_INPUT, 0) /* (B17) MCAN0_RX */
    			AM64X_IOPAD(0x0250, PIN_OUTPUT, 0) /* (A17) MCAN0_TX */
    		>;
    	};
    
    	main_mcan1_pins_default: main-mcan1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x025c, PIN_INPUT, 0) /* (D17) MCAN1_RX */
    			AM64X_IOPAD(0x0258, PIN_OUTPUT, 0) /* (C17) MCAN1_TX */
    		>;
    	};
    
    	icssg1_mdio1_pins_default: icssg1-mdio1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x015c, PIN_OUTPUT, 0) /* (Y6) PRG1_MDIO0_MDC */
    			AM64X_IOPAD(0x0158, PIN_INPUT, 0) /* (AA6) PRG1_MDIO0_MDIO */
    		>;
    	};
    
    	icssg1_rgmii1_pins_default: icssg1-rgmii1-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x00b8, PIN_INPUT, 2) /* (Y7) PRG1_PRU0_GPO0.PRG1_RGMII1_RD0 */
    			AM64X_IOPAD(0x00bc, PIN_INPUT, 2) /* (U8) PRG1_PRU0_GPO1.PRG1_RGMII1_RD1 */
    			AM64X_IOPAD(0x00c0, PIN_INPUT, 2) /* (W8) PRG1_PRU0_GPO2.PRG1_RGMII1_RD2 */
    			AM64X_IOPAD(0x00c4, PIN_INPUT, 2) /* (V8) PRG1_PRU0_GPO3.PRG1_RGMII1_RD3 */
    			AM64X_IOPAD(0x00d0, PIN_INPUT, 2) /* (AA7) PRG1_PRU0_GPO6.PRG1_RGMII1_RXC */
    			AM64X_IOPAD(0x00c8, PIN_INPUT, 2) /* (Y8) PRG1_PRU0_GPO4.PRG1_RGMII1_RX_CTL */
    			AM64X_IOPAD(0x00e4, PIN_INPUT, 2) /* (AA8) PRG1_PRU0_GPO11.PRG1_RGMII1_TD0 */
    			AM64X_IOPAD(0x00e8, PIN_INPUT, 2) /* (U9) PRG1_PRU0_GPO12.PRG1_RGMII1_TD1 */
    			AM64X_IOPAD(0x00ec, PIN_INPUT, 2) /* (W9) PRG1_PRU0_GPO13.PRG1_RGMII1_TD2 */
    			AM64X_IOPAD(0x00f0, PIN_INPUT, 2) /* (AA9) PRG1_PRU0_GPO14.PRG1_RGMII1_TD3 */
    			AM64X_IOPAD(0x00f8, PIN_INPUT, 2) /* (V9) PRG1_PRU0_GPO16.PRG1_RGMII1_TXC */
    			AM64X_IOPAD(0x00f4, PIN_INPUT, 2) /* (Y9) PRG1_PRU0_GPO15.PRG1_RGMII1_TX_CTL */
    		>;
    	};
    
    #ifdef DUAL_PRU_EMAC
            icssg1_rgmii2_pins_default: icssg1-rgmii2-pins-default {
                    pinctrl-single,pins = <
                            AM64X_IOPAD(0x0108, PIN_INPUT, 2) /* (W11) PRG1_PRU1_GPO0.RGMII2_RD0 */
                            AM64X_IOPAD(0x010c, PIN_INPUT, 2) /* (V11) PRG1_PRU1_GPO1.RGMII2_RD1 */
                            AM64X_IOPAD(0x0110, PIN_INPUT, 2) /* (AA12) PRG1_PRU1_GPO2.RGMII2_RD2 */
                            AM64X_IOPAD(0x0114, PIN_INPUT, 2) /* (Y12) PRG1_PRU1_GPO3.RGMII2_RD3 */
                            AM64X_IOPAD(0x0120, PIN_INPUT, 2) /* (U11) PRG1_PRU1_GPO6.RGMII2_RXC */
                            AM64X_IOPAD(0x0118, PIN_INPUT, 2) /* (W12) PRG1_PRU1_GPO4.RGMII2_RX_CTL */
                            AM64X_IOPAD(0x0134, PIN_OUTPUT, 2) /* (AA10) PRG1_PRU1_GPO11.RGMII2_TD0 */
                            AM64X_IOPAD(0x0138, PIN_OUTPUT, 2) /* (V10) PRG1_PRU1_GPO12.RGMII2_TD1 */
                            AM64X_IOPAD(0x013c, PIN_OUTPUT, 2) /* (U10) PRG1_PRU1_GPO13.RGMII2_TD2 */
                            AM64X_IOPAD(0x0140, PIN_OUTPUT, 2) /* (AA11) PRG1_PRU1_GPO14.RGMII2_TD3 */
                            AM64X_IOPAD(0x0148, PIN_OUTPUT, 2) /* (Y10) PRG1_PRU1_GPO16.RGMII2_TXC */
                            AM64X_IOPAD(0x0144, PIN_OUTPUT, 2) /* (Y11) PRG1_PRU1_GPO15.RGMII2_TX_CTL */
                    >;
            };
    #endif
    
    	icssg1_iep0_pins_default: icssg1-iep0-pins-default {
    		pinctrl-single,pins = <
    			AM64X_IOPAD(0x0104, PIN_OUTPUT, 2) /* (W7) PRG1_PRU0_GPO19.PRG1_IEP0_EDC_SYNC_OUT0 */
    		>;
    	};
    };
    
    &main_uart0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_uart0_pins_default>;
    };
    
    /* main_uart1 is reserved for firmware usage */
    &main_uart1 {
    	status = "reserved";
    };
    
    &main_i2c1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_i2c1_pins_default>;
    	clock-frequency = <400000>;
    
    	exp1: gpio@22 {
    		compatible = "ti,tca6424";
    		reg = <0x22>;
    		gpio-controller;
    		#gpio-cells = <2>;
    		gpio-line-names = "GPIO_eMMC_RSTn", "CAN_MUX_SEL",
    				  "GPIO_CPSW1_RST", "GPIO_RGMII1_RST",
    				  "GPIO_RGMII2_RST", "GPIO_PCIe_RST_OUT",
    				  "MMC1_SD_EN", "FSI_FET_SEL",
    				  "MCAN0_STB_3V3", "MCAN1_STB_3V3",
    				  "CPSW_FET_SEL", "CPSW_FET2_SEL",
    				  "PRG1_RGMII2_FET_SEL", "TEST_GPIO2",
    				  "GPIO_OLED_RESETn", "VPP_LDO_EN",
    				  "TEST_LED1", "TP92", "TP90", "TP88",
    				  "TP87", "TP86", "TP89", "TP91";
    	};
    
    	/* osd9616p0899-10 */
    	display@3c {
    		compatible = "solomon,ssd1306fb-i2c";
    		reg = <0x3c>;
    		reset-gpios = <&exp1 14 GPIO_ACTIVE_LOW>;
    		vbat-supply = <&vddb>;
    		solomon,height = <16>;
    		solomon,width = <96>;
    		solomon,com-seq;
    		solomon,com-invdir;
    		solomon,page-offset = <0>;
    		solomon,prechargep1 = <2>;
    		solomon,prechargep2 = <13>;
    	};
    };
    
    /* mcu_gpio0 is reserved for mcu firmware usage */
    &mcu_gpio0 {
    	status = "reserved";
    };
    
    &main_spi0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_spi0_pins_default>;
    	ti,pindir-d0-out-d1-in;
    	eeprom@0 {
    		compatible = "microchip,93lc46b";
    		reg = <0>;
    		spi-max-frequency = <1000000>;
    		spi-cs-high;
    		data-size = <16>;
    	};
    };
    
    &sdhci0 {
    	/* emmc */
    	bus-width = <8>;
    	non-removable;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &sdhci1 {
    	/* SD/MMC */
    	vmmc-supply = <&vdd_mmc1>;
    	pinctrl-names = "default";
    	bus-width = <4>;
    	pinctrl-0 = <&main_mmc1_pins_default>;
    	ti,driver-strength-ohm = <50>;
    	disable-wp;
    };
    
    &usbss0 {
    	ti,vbus-divider;
    	ti,usb2-only;
    };
    
    &usb0 {
    	dr_mode = "otg";
    	maximum-speed = "high-speed";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_usb0_pins_default>;
    };
    
    &cpsw3g {
    	pinctrl-names = "default";
    #ifndef DUAL_PRU_EMAC
    	pinctrl-0 = <&rgmii1_pins_default
    		     &rgmii2_pins_default>;
    #else
            pinctrl-0 = <&rgmii1_pins_default>;
    #endif
    
    	/* Map HW8_TS_PUSH to GENF1 */
    	cpts@3d000 {
    		ti,pps = <7 1>;
    	};
    };
    
    &cpsw_port1 {
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy0>;
    };
    
    #ifndef DUAL_PRU_EMAC
    &cpsw_port2 {
            status = "disabled";
    	phy-mode = "rgmii-rxid";
    	phy-handle = <&cpsw3g_phy3>;
    };
    #endif
    
    &cpsw3g_mdio {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&mdio1_pins_default>;
    
    	cpsw3g_phy0: ethernet-phy@0 {
    		reg = <0>;
    		ti,rx-internal-delay = <DP83867_RGMIIDCTL_2_00_NS>;
    		ti,fifo-depth = <DP83867_PHYCR_FIFO_DEPTH_4_B_NIB>;
    	};
    };
    
    #ifdef DUAL_PRU_EMAC
    &icssg1_eth {
            pinctrl-0 = <&icssg1_rgmii1_pins_default &icssg1_rgmii2_pins_default>;
    };
    
    &icssg1_emac1 {
            status = "okay";
            phy-handle = <&icssg1_phy3>;
            phy-mode = "rgmii-id";
    };
    #endif
    
    &tscadc0 {
    	/* ADC is reserved for R5 usage */
    	status = "reserved";
    };
    
    &ospi0 {
    	pinctrl-names = "default";
    	pinctrl-0 = <&ospi0_pins_default>;
    
    	flash@0 {
    		compatible = "jedec,spi-nor";
    		reg = <0x0>;
    		spi-tx-bus-width = <8>;
    		spi-rx-bus-width = <8>;
    		spi-max-frequency = <25000000>;
    		cdns,tshsl-ns = <60>;
    		cdns,tsd2d-ns = <60>;
    		cdns,tchsh-ns = <60>;
    		cdns,tslch-ns = <60>;
    		cdns,read-delay = <4>;
    
    		partitions {
    			compatible = "fixed-partitions";
    			#address-cells = <1>;
    			#size-cells = <1>;
    
    			partition@0 {
    				label = "ospi.tiboot3";
    				reg = <0x0 0x100000>;
    			};
    
    			partition@100000 {
    				label = "ospi.tispl";
    				reg = <0x100000 0x200000>;
    			};
    
    			partition@300000 {
    				label = "ospi.u-boot";
    				reg = <0x300000 0x400000>;
    			};
    
    			partition@700000 {
    				label = "ospi.env";
    				reg = <0x700000 0x40000>;
    			};
    
    			partition@740000 {
    				label = "ospi.env.backup";
    				reg = <0x740000 0x40000>;
    			};
    
    			partition@800000 {
    				label = "ospi.rootfs";
    				reg = <0x800000 0x37c0000>;
    			};
    
    			partition@3fc0000 {
    				label = "ospi.phypattern";
    				reg = <0x3fc0000 0x40000>;
    			};
    		};
    	};
    };
    
    &mailbox0_cluster2 {
    	mbox_main_r5fss0_core0: mbox-main-r5fss0-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss0_core1: mbox-main-r5fss0-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster3 {
    	status = "disabled";
    };
    
    &mailbox0_cluster4 {
    	mbox_main_r5fss1_core0: mbox-main-r5fss1-core0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    
    	mbox_main_r5fss1_core1: mbox-main-r5fss1-core1 {
    		ti,mbox-rx = <2 0 2>;
    		ti,mbox-tx = <3 0 2>;
    	};
    };
    
    &mailbox0_cluster5 {
    	status = "disabled";
    };
    
    &mailbox0_cluster6 {
    	mbox_m4_0: mbox-m4-0 {
    		ti,mbox-rx = <0 0 2>;
    		ti,mbox-tx = <1 0 2>;
    	};
    };
    
    &mailbox0_cluster7 {
    	status = "disabled";
    };
    
    &main_r5fss0_core0 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core0>;
    	memory-region = <&main_r5fss0_core0_dma_memory_region>,
    			<&main_r5fss0_core0_memory_region>;
    };
    
    &main_r5fss0_core1 {
    	mboxes = <&mailbox0_cluster2 &mbox_main_r5fss0_core1>;
    	memory-region = <&main_r5fss0_core1_dma_memory_region>,
    			<&main_r5fss0_core1_memory_region>;
    };
    
    &main_r5fss1_core0 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core0>;
    	memory-region = <&main_r5fss1_core0_dma_memory_region>,
    			<&main_r5fss1_core0_memory_region>;
    };
    
    &main_r5fss1_core1 {
    	mboxes = <&mailbox0_cluster4 &mbox_main_r5fss1_core1>;
    	memory-region = <&main_r5fss1_core1_dma_memory_region>,
    			<&main_r5fss1_core1_memory_region>;
    };
    
    &mcu_m4fss {
    	mboxes = <&mailbox0_cluster6 &mbox_m4_0>;
    	memory-region = <&mcu_m4fss_dma_memory_region>,
    			<&mcu_m4fss_memory_region>;
    };
    
    &serdes_ln_ctrl {
    	idle-states = <AM64_SERDES0_LANE0_PCIE0>;
    };
    
    &serdes0 {
    	serdes0_pcie_link: phy@0 {
    		reg = <0>;
    		cdns,num-lanes = <1>;
    		#phy-cells = <0>;
    		cdns,phy-type = <PHY_TYPE_PCIE>;
    		resets = <&serdes_wiz0 1>;
    	};
    };
    
    &pcie0_rc {
    	status = "okay";
    	reset-gpios = <&exp1 5 GPIO_ACTIVE_HIGH>;
    	phys = <&serdes0_pcie_link>;
    	phy-names = "pcie-phy";
    	num-lanes = <1>;
    };
    
    &pcie0_ep {
    	phys = <&serdes0_pcie_link>;
    	phy-names = "pcie-phy";
    	num-lanes = <1>;
    };
    
    &ecap0 {
    	status = "okay";
    	/* PWM is available on Pin 1 of header J12 */
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_ecap0_pins_default>;
    };
    
    &main_mcan0 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mcan0_pins_default>;
    	phys = <&transceiver1>;
    };
    
    &main_mcan1 {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&main_mcan1_pins_default>;
    	phys = <&transceiver2>;
    };
    
    &icssg1_mdio {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&icssg1_mdio1_pins_default>;
    
    	icssg1_phy1: ethernet-phy@0 {
    		reg = <0xf>;
    		tx-internal-delay-ps = <250>;
    		rx-internal-delay-ps = <2000>;
    	};
    #ifdef DUAL_PRU_EMAC
    	icssg1_phy3: ethernet-phy@1 {
    		reg = <0x3>;
    		tx-internal-delay-ps = <250>;
    		rx-internal-delay-ps = <2000>;
    	};
    #endif
    };
    
    #define TS_OFFSET(pa, val)     (0x4+(pa)*4) (0x10000 | val)
    
    &timesync_router {
    	status = "okay";
    	pinctrl-names = "default";
    	pinctrl-0 = <&cpsw_cpts_pps>;
    
    	/*
    	 * Use Time Sync Router to map GENF1 input to HW8_TS_PUSH output as well
    	 * as the PRU ICSSG0 SYNC1 output.
    	 */
    	cpsw_cpts_pps: cpsw-cpts-pps {
    		pinctrl-single,pins = <
    			/* pps [cpts genf1] in22 -> out37 [cpts hw8_push] */
    			TS_OFFSET(37, 22)
    			/* pps [cpts genf1] in22 -> out26 [SYNC1_OUT pin] */
    			TS_OFFSET(26, 22)
    			>;
    	};
    };
    

  • Hello Bruno,

    Apologies for the delay, I lost your thread during Thanksgiving vacation. I will take a look and get back to you tomorrow.

    Regards,

    Nick

  • Hello Bruno,

    The PRU Ethernet code (on both the Linux and PRU firmware sides, as far as I can tell) is still under active development. I know that there are multiple bugs we are fixing in the latest SDK 9.1, which should go live within the next 2 weeks.

    Could you test with the latest code and see if you can still reproduce the problem?

    The latest firmware is here:
    https://git.ti.com/cgit/processor-firmware/ti-linux-firmware/tree/ti-pruss?h=ti-linux-firmware 

    And the latest version of the PRU ETH drivers should be here:
    https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/?h=ti-linux-6.1.y-cicd

    Regards,

    Nick

  • Thanks Nick,

    I had started down this path a few days ago.  I cannot reproduce the issue with the newer code.

    I'm having problems making it work on our proprietary HW that use DP83826 (DP83822 driver) PHY in MII mode.  I followed the example from k3-am642-evm-icssg1-dualemac-mii.dtso.

    Is there an MII PHY eval board available for the AM64EVM?

  • Reassigning to another team member to comment on the MII question.

    Additional context from offline:

    "our custom HW with DP83826 has worked with older versions of kernel & FW" (exact version unknown).

    Regards,

    Nick

  • If I try to ping from the device to a linux box @ 192.168.1.42, I eventually get the following tx timeout traceback:


    ~ # ping 192.168.1.42
    PING 192.168.1.42 (192.168.1.42): 56 data bytes

    [ 121.849794] ------------[ cut here ]------------
    [ 121.849828] NETDEV WATCHDOG: eth1 (icssg-prueth): transmit queue 0 timed out
    [ 121.849915] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:526 dev_watchdog+0x1f4/0x200
    [ 121.869845] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.1.20-rt8 #1
    [ 121.876191] Hardware name: Sick SIG300 (DT)
    [ 121.880364] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [ 121.887314] pc : dev_watchdog+0x1f4/0x200
    [ 121.891318] lr : dev_watchdog+0x1f4/0x200
    [ 121.895320] sp : ffff800008003e30
    [ 121.898625] x29: ffff800008003e30 x28: ffff800008eb9e80 x27: ffff8000088bb220
    [ 121.905759] x26: ffff800008003f18 x25: dead000000000122 x24: ffff800008ea7000
    [ 121.912889] x23: 0000000000000000 x22: ffff000002b223a0 x21: ffff000002b223d8
    [ 121.920018] x20: ffff000002b22000 x19: ffff000002b21fd8 x18: 0000000000000000
    [ 121.927149] x17: ffff800015960000 x16: ffff800008004000 x15: ffffffffffffffff
    [ 121.934279] x14: ffff800008cba658 x13: 74756f2064656d69 x12: 7420302065756575
    [ 121.941408] x11: 712074696d736e61 x10: 7274203a29687465 x9 : 7572702d67737363
    [ 121.948538] x8 : ffff800008ec63b8 x7 : ffff800008003c40 x6 : ffff800008f1e490
    [ 121.955669] x5 : ffff800008003c40 x4 : 00000000fffff14f x3 : ffff800008f203f8
    [ 121.962798] x2 : ffff800008ec62f8 x1 : 4c82e8b830a3ae00 x0 : 0000000000000000
    [ 121.969928] Call trace:
    [ 121.972368] dev_watchdog+0x1f4/0x200
    [ 121.976026] call_timer_fn.isra.29+0x24/0x80
    [ 121.980297] run_timer_softirq+0x38c/0x3c8
    [ 121.984388] _stext+0x124/0x28c
    [ 121.987523] ____do_softirq+0x10/0x20
    [ 121.991180] call_on_irq_stack+0x2c/0x54
    [ 121.995096] do_softirq_own_stack+0x1c/0x28
    [ 121.999271] irq_exit_rcu+0xe8/0xf8
    [ 122.002758] el1_interrupt+0x3c/0x58
    [ 122.006329] el1h_64_irq_handler+0x18/0x28
    [ 122.010418] el1h_64_irq+0x64/0x68
    [ 122.013813] arch_cpu_idle+0x18/0x28
    [ 122.017381] default_idle_call+0x24/0x5c
    [ 122.021302] do_idle+0xfc/0x130
    [ 122.024440] cpu_startup_entry+0x24/0x30
    [ 122.028356] kernel_init+0x0/0x128
    [ 122.031751] arch_post_acpi_subsys_init+0x0/0x18
    [ 122.036362] start_kernel+0x650/0x688
    [ 122.040017] __primary_switched+0xbc/0xc4
    [ 122.044021] ---[ end trace 0000000000000000 ]---

    ^C
    --- 192.168.1.42 ping statistics ---
    104 packets transmitted, 0 packets received, 100% packet loss
    ~ #

  • To be clear about the current state of this issue:  Using TI kernel code corresponding to SDK 9.1 upcoming release, there is no problem on AM64EVM.  With our own HW design, that uses  MII PHYs, there is no communication over ethernet at all.  Incoming ping are not seen at the EMAC layer, outgoing pings give a timeout traceback after a few minutes (shown above).

  • This is what /proc/interrupts shows on working AM64EVM inbound pings on both prueth ports using kernel 6.1.20:

    ~ # cat /proc/interrupts
               CPU0       CPU1
     11:       5236       3996     GICv3  30 Level     arch_timer
     17:          0          0     GICv3  23 Level     arm-pmu
     18:       2336          0     GICv3  66 Level     4d000000.mailbox thr_012
     19:        111          0     GICv3 165 Level     mmc0
     20:        203          0     GICv3 194 Level     20010000.i2c
     21:        226          0  MSI-INTA 1713152 Level     485c0100.dma-controller chan0
     57:          0          0  MSI-INTA 1970688 Level     485c0000.dma-controller chan1
    141:         30          0  MSI-INTA 1970792 Level     icssg1-eth-tx0
    145:         21          0  MSI-INTA 1970796 Level     icssg1-eth-tx0
    149:          0          0  MSI-INTA 1971712 Level     485c0000.dma-controller chan0
    241:         47          0  MSI-INTA 1971824 Level     icssg1-eth
    257:         23          0  MSI-INTA 1971840 Level     icssg1-eth
    321:        285          0     GICv3 210 Level     2800000.serial
    322:          2          0     GICv3 171 Level     fc40000.spi
    324:          0          0     GICv3 204 Level     20100000.spi
    512:        750          0     GICv3 166 Level     mmc1
    513:          0          0  pruss-intc  24 Edge      icssg1-eth
    514:          0          0  pruss-intc  25 Edge      icssg1-eth
    IPI0:      1015       2497       Rescheduling interrupts
    IPI1:       844       1900       Function call interrupts
    IPI2:         0          0       CPU stop interrupts
    IPI3:         0          0       CPU stop (for crash dump) interrupts
    IPI4:         0          0       Timer broadcast interrupts
    IPI5:       101         69       IRQ work interrupts
    IPI6:         0          0       CPU wake-up interrupts
    Err:          0
    ~ #
    ~ # uname -a
    Linux am64x 6.1.20-rt8 #1 SMP PREEMPT_RT Tue Dec  5 22:47:59 UTC 2023 aarch64 GNU/Linux
    ~ #
    
    

  • This is what /proc/interrupts shows on working AM64EVM inbound ping on prueth eth1 and outbound ping on eth1 using kernel 6.1.20:

    <why do no dma-controller interrupts appear here?>
    <interrupt 145 show 9 interrupts, the same number reported by ifconfig for tx 
     packets>
    ~ # cat /proc/interrupts
               CPU0
     11:      17264     GICv3  30 Level     arch_timer
     14:          4     GICv3 112 Level     mbox-main-r5fss0-core0
     17:          0     GICv3  23 Level     arm-pmu
     18:       2291     GICv3  66 Level     4d000000.mailbox thr_012
     19:          0     GICv3 193 Level     20000000.i2c
     20:       1239     GICv3 165 Level     mmc0
    141:          0  MSI-INTA 1970792 Level     icssg1-eth-tx0
    145:          9  MSI-INTA 1970796 Level     icssg1-eth-tx0
    241:          0  MSI-INTA 1971824 Level     icssg1-eth
    257:          0  MSI-INTA 1971840 Level     icssg1-eth
    313:        313     GICv3 210 Level     2800000.serial
    407:          0  pruss-intc  24 Edge      icssg1-eth
    408:          0  pruss-intc  25 Edge      icssg1-eth
    IPI0:         0       Rescheduling interrupts
    IPI1:         0       Function call interrupts
    IPI2:         0       CPU stop interrupts
    IPI3:         0       CPU stop (for crash dump) interrupts
    IPI4:         0       Timer broadcast interrupts
    IPI5:         0       IRQ work interrupts
    IPI6:         0       CPU wake-up interrupts
    Err:          0
    ~ #
    ~ # uname -a
    Linux sig300 6.1.20-rt8 #1 SMP PREEMPT_RT Tue Dec 12 16:28:08 UTC 2023 aarch64 GNU/Linux
    ~ #
    

  • Sorry, last post shows our proprietary HW that uses single core A53 device AM6421.

  • This is what /proc/interrupts shows on working  proprietary HW inbound ping on prueth eth1 and outbound ping on eth1 using kernel 5.10.158:

    >
    <5.10.158 kernel>
    <single CPU A53 AM6421 device>
    ~ # cat /proc/interrupts
               CPU0
     11:      37286     GICv3  30 Level     arch_timer
     14:          0     GICv3  23 Level     arm-pmu
     15:       3425     GICv3  66 Level     4d000000.mailbox thr_012
     16:        597     GICv3 210 Level     2800000.serial
     17:          0     GICv3 193 Level     20000000.i2c
     18:          0     GICv3 196 Level     20030000.i2c
     19:          0     GICv3 205 Level     20110000.spi
     20:          0     GICv3 206 Level     20120000.spi
     21:          0     GICv3 141 Level     20130000.spi
     22:          0     GICv3 207 Level     20140000.spi
     23:       2330     GICv3 165 Level     mmc0
     25:        497     GICv3 112 Level     mbox-main-r5fss0-core0
    158:          0  MSI-INTA 1970792 Level     icssg1-eth-tx0
    162:         14  MSI-INTA 1970796 Level     icssg1-eth-tx0
    258:          0  MSI-INTA 1971824 Level     icssg1-eth
    274:         15  MSI-INTA 1971840 Level     icssg1-eth
    334:          0  pruss-intc  24 Level     icssg1-eth
    335:          0  pruss-intc  25 Level     icssg1-eth
    337:       1857     GICv3 226 Level     f400000.usb
    338:          0     GICv3 228 Level     f400000.usb
    IPI0:         0       Rescheduling interrupts
    IPI1:         0       Function call interrupts
    IPI2:         0       CPU stop interrupts
    IPI3:         0       CPU stop (for crash dump) interrupts
    IPI4:         0       Timer broadcast interrupts
    IPI5:         0       IRQ work interrupts
    IPI6:         0       CPU wake-up interrupts
    Err:          0
    ~ #
    ~ # uname -a
    Linux sig300 5.10.158-rt64 #1 SMP PREEMPT_RT Wed Oct 18 17:02:58 UTC 2023 aarch64 GNU/Linux
    ~ #
    
    :

  • Hello Bruno,

    Apologies for the delayed response. It sounds like the team tested AM64x ICSSG1 with DP83869 (which is in our EVM) in both RGMII and MII mode. From the developer:

    "I have tested MII mode on our AM64x EVM (Using DP83869 PHY driver) and it works. The issue might be occurring because of some phy configuration missing in their phy driver / hardware."

    My team doesn't have experience with the DP83826 specifically. If you need me to ask additional questions about how DP83869 was tested in MII mode I can look into that for you.

    In the meantime, can you provide a boot log to see whether the PHY is getting recognized & initialized during boot time?

    Regards,

    Nick

  • Hi Nick,

    Yes, details about AM64EVM and DP83869 in MII mode would be helpful.

    Here the boot log:

    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.1.20-rt8 (oe-user@oe-host) (aarch64-oe-linux-gcc (GCC) 8.2.0, GNU ld (GNU Binutils) 2.31.1.20181224) #1 SMP PREEMPT_RT Tue Dec 12 21:30:37 UTC 2023
    [    0.000000] Machine model: My Device
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000090000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@90000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000090100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@90100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000091000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@91000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000091100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@91100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000092000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@92000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000092100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@92100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000093000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@93000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x0000000093100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@93100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x000000009fffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000008fffffff]
    [    0.000000]   node   0: [mem 0x0000000090000000-0x0000000093ffffff]
    [    0.000000]   node   0: [mem 0x0000000094000000-0x0000000094ffffff]
    [    0.000000]   node   0: [mem 0x0000000095000000-0x00000000957fffff]
    [    0.000000]   node   0: [mem 0x0000000095800000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x000000009fffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x000000009fffffff]
    [    0.000000] cma: Reserved 24 MiB at 0x000000009c400000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.2
    [    0.000000] percpu: Embedded 16 pages/cpu s35280 r0 d30256 u65536
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] alternatives: applying boot alternatives
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 129024
    [    0.000000] Kernel command line: console=ttyS2,115200 root=/dev/mmcblk0p6 rootfstype=ext4 rw rootwait earlycon=ns16550a,mmio32,0x02800000 uboot_rev=42f51e7c
    [    0.000000] Unknown kernel command line parameters "uboot_rev=42f51e7c", will be passed to user space.
    [    0.000000] Dentry cache hash table entries: 65536 (order: 7, 524288 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 374388K/524288K available (10432K kernel code, 1372K rwdata, 2752K rodata, 1728K init, 458K bss, 125324K reserved, 24576K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=1.
    [    0.000000] rcu:     RCU priority boosting: priority 1 delay 500 ms.
    [    0.000000] rcu:     RCU_SOFTIRQ processing moved to rcuc kthreads.
    [    0.000000]  No expedited grace period (rcu_normal_after_boot).
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=1
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] Root IRQ handler: gic_handle_irq
    [    0.000000] GICv3: GICv3 features: 16 PPIs
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @81c00000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000001] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.000375] Console: colour dummy device 80x25
    [    0.520784] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.520797] pid_max: default: 32768 minimum: 301
    [    0.520876] LSM: Security Framework initializing
    [    0.521054] Mount-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
    [    0.521067] Mountpoint-cache hash table entries: 1024 (order: 1, 8192 bytes, linear)
    [    0.523830] rcu: Hierarchical SRCU implementation.
    [    0.523845] rcu:     Max phase no-delay instances is 1000.
    [    0.523929] printk: bootconsole [ns16550a0] printing thread started
    [    0.577250] Platform MSI: msi-controller@1820000 domain created
    [    0.577486] EFI services will not be available.
    [    0.577903] smp: Bringing up secondary CPUs ...
    [    0.577909] smp: Brought up 1 node, 1 CPU
    [    0.577914] SMP: Total of 1 processors activated.
    [    0.577925] CPU features: detected: 32-bit EL0 Support
    [    0.577933] CPU features: detected: CRC32 instructions
    [    0.578022] CPU: All CPU(s) started at EL2
    [    0.578025] alternatives: applying system-wide alternatives
    [    0.579465] devtmpfs: initialized
    [    0.590978] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.591013] futex hash table entries: 256 (order: 3, 32768 bytes, linear)
    [    0.592375] pinctrl core: initialized pinctrl subsystem
    [    0.593409] DMI not present or invalid.
    [    0.594083] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.595962] DMA: preallocated 128 KiB GFP_KERNEL pool for atomic allocations
    [    0.596206] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.596356] DMA: preallocated 128 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.597275] thermal_sys: Registered thermal governor 'step_wise'
    [    0.597717] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.597813] ASID allocator initialised with 65536 entries
    [    0.610649] KASLR disabled due to lack of seed
    [    0.625761] cryptd: max_cpu_qlen set to 1000
    [    0.820082] raid6: neonx8   gen()  1794 MB/s
    [    0.885793] raid6: neonx4   gen()  1832 MB/s
    [    0.962544] raid6: neonx2   gen()  1747 MB/s
    [    1.034293] raid6: neonx1   gen()  1520 MB/s
    [    1.102053] raid6: int64x8  gen()  1242 MB/s
    [    1.178887] raid6: int64x4  gen()  1388 MB/s
    [    1.250600] raid6: int64x2  gen()  1182 MB/s
    [    1.318369] raid6: int64x1  gen()   879 MB/s
    [    1.318375] raid6: using algorithm neonx4 gen() 1832 MB/s
    [    1.400631] raid6: .... xor() 1329 MB/s, rmw enabled
    [    1.400637] raid6: using neon recovery algorithm
    [    1.401700] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
    [    1.402406] iommu: Default domain type: Translated
    [    1.402418] iommu: DMA domain TLB invalidation policy: strict mode
    [    1.432748] usbcore: registered new interface driver usbfs
    [    1.432795] usbcore: registered new interface driver hub
    [    1.432837] usbcore: registered new device driver usb
    [    1.433408] pps_core: LinuxPPS API ver. 1 registered
    [    1.433413] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    1.433434] PTP clock support registered
    [    1.433493] EDAC MC: Ver: 3.0.0
    [    1.434816] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    1.435242] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    1.435498] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [    1.438046] clocksource: Switched to clocksource arch_sys_counter
    [    1.438412] VFS: Disk quotas dquot_6.6.0
    [    1.438465] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    1.447619] NET: Registered PF_INET protocol family
    [    1.448110] IP idents hash table entries: 8192 (order: 4, 65536 bytes, linear)
    [    1.449354] tcp_listen_portaddr_hash hash table entries: 256 (order: 1, 14336 bytes, linear)
    [    1.449404] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    1.449420] TCP established hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    1.449481] TCP bind hash table entries: 4096 (order: 6, 458752 bytes, linear)
    [    1.450181] TCP: Hash tables configured (established 4096 bind 4096)
    [    1.450405] UDP hash table entries: 256 (order: 3, 32768 bytes, linear)
    [    1.450496] UDP-Lite hash table entries: 256 (order: 3, 32768 bytes, linear)
    [    1.450849] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    1.452151] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    1.454346] workingset: timestamp_bits=46 max_order=17 bucket_order=0
    [    1.464584] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    1.562149] NET: Registered PF_ALG protocol family
    [    1.562170] xor: measuring software checksum speed
    [    1.567023]    8regs           :  2035 MB/sec
    [    1.654044]    32regs          :  2102 MB/sec
    [    1.658889]    arm64_neon      :  2037 MB/sec
    [    1.658893] xor: using function: 32regs (2102 MB/sec)
    [    1.659236] io scheduler mq-deadline registered
    [    1.659244] io scheduler kyber registered
    [    1.666852] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    1.667566] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    1.669076] pinctrl-single a40000.pinctrl: 512 pins, size 2048
    [    1.669934] ti-syscon-gate-clk 43004130.clock: failed to find parent regmap
    [    1.669943] ti-syscon-gate-clk: probe of 43004130.clock failed with error -22
    [    1.676205] Serial: 8250/16550 driver, 10 ports, IRQ sharing enabled
    [    1.695236] brd: module loaded
    [    1.703620] loop: module loaded
    [    1.710429] tun: Universal TUN/TAP device driver, 1.6
    [    1.710889] CAN device driver interface
    [    1.711594] usbcore: registered new interface driver asix
    [    1.711631] usbcore: registered new interface driver ax88179_178a
    [    1.711671] usbcore: registered new interface driver cdc_ether
    [    1.711705] usbcore: registered new interface driver net1080
    [    1.711739] usbcore: registered new interface driver cdc_subset
    [    1.711773] usbcore: registered new interface driver zaurus
    [    1.711821] usbcore: registered new interface driver cdc_ncm
    [    1.711861] usbcore: registered new interface driver r8153_ecm
    [    1.712156] VFIO - User Level meta-driver version: 0.3
    [    1.713446] gadgetfs: USB Gadget filesystem, version 24 Aug 2004
    [    1.713465] file system registered
    [    1.713549] i2c_dev: i2c /dev entries driver
    [    1.715425] device-mapper: ioctl: 4.47.0-ioctl (2022-07-28) initialised: dm-devel@redhat.com
    [    1.716158] sdhci: Secure Digital Host Controller Interface driver
    [    1.716168] sdhci: Copyright(c) Pierre Ossman
    [    1.716434] sdhci-pltfm: SDHCI platform and OF driver helper
    [    1.716811] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    1.719021] optee: probing for conduit method.
    [    1.719063] optee: revision 3.19 (d6c5d003)
    [    1.719540] optee: dynamic shared memory is enabled
    [    1.720052] optee: initialized driver
    [    1.721036] IPVS: Registered protocols (TCP, UDP)
    [    1.721216] IPVS: Connection hash table configured (size=4096, memory=32Kbytes)
    [    1.721442] IPVS: ipvs loaded.
    [    1.721451] IPVS: [rr] scheduler registered.
    [    1.721590] Initializing XFRM netlink socket
    [    1.721657] NET: Registered PF_PACKET protocol family
    [    1.721740] Bridge firewalling registered
    [    1.721744] can: controller area network core
    [    1.721813] NET: Registered PF_CAN protocol family
    [    1.721821] can: raw protocol
    [    1.724624] Btrfs loaded, crc32c=crc32c-generic, zoned=no, fsverity=no
    [    2.545776] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0008 '8.5.3--v08.05.03 (Chill Capybar')
    [    3.207723] platform 78000000.r5f: configured R5F for remoteproc mode
    [    3.207834] k3_r5_rproc bus@f4000:r5fss@78000000: split-mode not permitted, force configuring for single-cpu mode
    [    3.208071] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@90000000
    [    3.208480] remoteproc remoteproc0: 78000000.r5f is available
    [    3.208768] remoteproc remoteproc0: firmware: failed to load am64-main-r5f0_0-fw (-2)
    [    3.208778] firmware_class: See https://wiki.debian.org/Firmware for information about missing firmware
    [    3.208782] remoteproc remoteproc0: Direct firmware load for am64-main-r5f0_0-fw failed with error -2
    [    3.208798] remoteproc remoteproc0: powering up 78000000.r5f
    [    3.208860] remoteproc remoteproc0: firmware: failed to load am64-main-r5f0_0-fw (-2)
    [    3.208867] remoteproc remoteproc0: Direct firmware load for am64-main-r5f0_0-fw failed with error -2
    [    3.208876] remoteproc remoteproc0: request_firmware failed: -2
    [    3.218721] platform 78400000.r5f: configured R5F for remoteproc mode
    [    3.218826] k3_r5_rproc bus@f4000:r5fss@78400000: split-mode not permitted, force configuring for single-cpu mode
    [    3.219052] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@92000000
    [    3.219476] remoteproc remoteproc1: 78400000.r5f is available
    [    3.219744] remoteproc remoteproc1: firmware: failed to load am64-main-r5f1_0-fw (-2)
    [    3.219754] remoteproc remoteproc1: Direct firmware load for am64-main-r5f1_0-fw failed with error -2
    [    3.219767] remoteproc remoteproc1: powering up 78400000.r5f
    [    3.219825] remoteproc remoteproc1: firmware: failed to load am64-main-r5f1_0-fw (-2)
    [    3.219831] remoteproc remoteproc1: Direct firmware load for am64-main-r5f1_0-fw failed with error -2
    [    3.219840] remoteproc remoteproc1: request_firmware failed: -2
    [    3.227451] at24 0-0056: supply vcc not found, using dummy regulator
    [    4.234050] omap_i2c 20000000.i2c: timeout waiting for bus ready
    [    5.242044] omap_i2c 20000000.i2c: timeout waiting for bus ready
    [    5.244137] omap_i2c 20000000.i2c: bus 0 rev0.12 at 400 kHz
    [    5.244614] ti-sci-intr 4210000.interrupt-controller: Destination irq resource allocation failed
    [    5.244624] ti-sci-intr: probe of 4210000.interrupt-controller failed with error -22
    [    5.245241] ti-sci-intr bus@f4000:interrupt-controller@a00000: Interrupt Router 3 domain created
    [    5.245710] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    5.246262] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    5.248287] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    5.254950] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    5.280098] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    5.347496] remoteproc remoteproc2: 300b4000.pru is available
    [    5.348531] remoteproc remoteproc3: 30084000.rtu is available
    [    5.349372] remoteproc remoteproc4: 3008a000.txpru is available
    [    5.350532] remoteproc remoteproc5: 300b8000.pru is available
    [    5.351573] remoteproc remoteproc6: 30086000.rtu is available
    [    5.352407] remoteproc remoteproc7: 3008c000.txpru is available
    [    5.353212] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
    [    5.399481] printk: console [ttyS2] enabled
    [    5.399488] printk: bootconsole [ns16550a0] disabled
    [    5.399512] printk: bootconsole [ns16550a0] printing thread stopped
    [    5.403615] printk: console [ttyS2] printing thread started
    [    5.419100] k3-j72xx-soc-thermal b00000.temperature-sensor: invalid resource
    [    5.419130] k3-j72xx-soc-thermal: probe of b00000.temperature-sensor failed with error -22
    [    5.423016] mmc0: CQHCI version 5.10
    [    5.424472] gpio-436 (emmcresetn): hogged as output/high
    [    5.446428] icssg-prueth icssg1-eth: port 1: using random MAC addr: 7e:57:56:8b:8a:ac
    [    5.446868] icssg-prueth icssg1-eth: port 2: using random MAC addr: 16:4b:63:c0:52:2c
    [    5.450329] TI DP83826C 300b2400.mdio:00: attached PHY driver (mii_bus:phy_addr=300b2400.mdio:00, irq=POLL)
    [    5.453324] TI DP83826C 300b2400.mdio:02: attached PHY driver (mii_bus:phy_addr=300b2400.mdio:02, irq=POLL)
    [    5.453351] icssg-prueth icssg1-eth: TI PRU ethernet driver initialized: dual EMAC mode
    [    5.455454] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
    [    5.479309] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    5.568837] Waiting for root device /dev/mmcblk0p6...
    [    5.631533] mmc0: Command Queue Engine enabled
    [    5.631571] mmc0: new HS200 MMC card at address 0001
    [    5.632653] mmcblk0: mmc0:0001 00005G 4.80 GiB
    [    5.639874]  mmcblk0: p1 p2 < p5 p6 > p3 p4
    [    5.640576] mmcblk0: p4 size 16779263 extends beyond EOD, truncated
    [    5.641702] mmcblk0boot0: mmc0:0001 00005G 31.5 MiB
    [    5.643713] mmcblk0boot1: mmc0:0001 00005G 31.5 MiB
    [    5.647278] mmcblk0rpmb: mmc0:0001 00005G 4.00 MiB, chardev (239:0)
    [    5.680660] EXT4-fs (mmcblk0p6): recovery complete
    [    5.681270] EXT4-fs (mmcblk0p6): mounted filesystem with ordered data mode. Quota mode: none.
    [    5.681389] VFS: Mounted root (ext4 filesystem) on device 179:6.
    [    5.687440] devtmpfs: mounted
    [    5.689100] Freeing unused kernel memory: 1728K
    [    5.689255] Run /sbin/init as init process
    [    5.763770] EXT4-fs (mmcblk0p5): mounted filesystem with ordered data mode. Quota mode: none.
    [    5.773516] EXT4-fs (mmcblk0p6): re-mounted. Quota mode: none.
    kernel.sysrq = 0
    kernel.core_pattern = /datafs/var/log/core.%e.%s.%t
    kernel.panic_on_oops = 1
    kernel.panic = 60
    net.ipv4.conf.all.arp_ignore = 1
    net.ipv4.conf.all.arp_announce = 2
    net.ipv4.conf.all.accept_local = 1
    fs.suid_dumpable = 1
    Starting entropystore daemon.
    [    6.006578] random: crng init done
    Starting random number generator daemon.
    Starting OpenBSD Secure Shell server: sshd
    done.
    /etc/init.d/06_net-usb: line 64: get_serial_number: not found
    Up 6.76s 06_net-usb [WARNING]: No serial number for device configured! Using SOC serial for usb!
    /etc/init.d/06_net-usb: line 67: get_soc_serial_number: not found
    [    6.849686] using random self ethernet address
    [    6.849707] using random host ethernet address
    [    6.893529] using random self ethernet address
    [    6.893550] using random host ethernet address
    Up 7.07s 06_net-usb [WARNING]: No HOST_MAC config found! Trying to set a reasonable HOST_MAC for interface usb1.
    /etc/init.d/06_net-usb: line 67: get_soc_serial_number: not found
    Up 7.24s 06_net-usb [INFO]   : Initializing usb net for interface usb1 with HOST_MAC 02:06:77:33:1d:7c and serial number
    Up 7.45s 06_net-usb [WARNING]: No MAC config found! Trying to set a reasonable MAC for interface usb1.
    /etc/init.d/06_net-usb: line 67: get_soc_serial_number: not found
    Up 7.61s 06_net-usb [INFO]   : Setting up interface usb1 with IP 169.254.0.1/16 and MAC 02:06:77:43:1d:7c
    [    7.699946] usb0: HOST MAC 02:06:77:43:1d:7c
    [    7.699969] usb0: MAC 02:06:77:43:1d:7c
    [    7.701295] usb1: HOST MAC 02:06:77:43:1d:7c
    [    7.701311] usb1: MAC 02:06:77:43:1d:7c
    Create /var/volatile/ram
    Initialize system EDP_Unittest_CortexA53 ...
    [    8.059691] EXT4-fs (mmcblk0p4): recovery complete
    Warning: Cannot find mac config used. Using defaults.[    8.060230] EXT4-fs (mmcblk0p4): mounted filesystem with ordered data mode. Quota mode: none.
    
    Setting core file size...
    [    8.436868] cdns-usb3 f400000.usb: onchip mem is full, ep is invalid
    [    8.436893] cdns-usb3 f400000.usb: onchip mem is full, ep is invalid
    Setting up eth0, eth1 ethernet interfaces
    [    8.787410] remoteproc remoteproc2: powering up 300b4000.pru
    [    8.790340] remoteproc remoteproc2: firmware: direct-loading firmware ti-pruss/am65x-sr2-pru0-prueth-fw.elf
    [    8.790371] remoteproc remoteproc2: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 40936
    [    8.790407] remoteproc remoteproc2: unsupported resource 5
    [    8.790440] remoteproc remoteproc2: remote processor 300b4000.pru is now up
    [    8.790487] remoteproc remoteproc3: powering up 30084000.rtu
    [    8.794200] remoteproc remoteproc3: firmware: direct-loading firmware ti-pruss/am65x-sr2-rtu0-prueth-fw.elf
    [    8.794223] remoteproc remoteproc3: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 30884
    [    8.794269] remoteproc remoteproc3: remote processor 30084000.rtu is now up
    [    8.794312] remoteproc remoteproc4: powering up 3008a000.txpru
    [    8.795424] remoteproc remoteproc4: firmware: direct-loading firmware ti-pruss/am65x-sr2-txpru0-prueth-fw.elf
    [    8.795449] remoteproc remoteproc4: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 36672
    [    8.795497] remoteproc remoteproc4: remote processor 3008a000.txpru is now up
    [    8.795793] remoteproc remoteproc5: powering up 300b8000.pru
    [    8.796832] remoteproc remoteproc5: firmware: direct-loading firmware ti-pruss/am65x-sr2-pru1-prueth-fw.elf
    
    device login: [    8.796857] remoteproc remoteproc5: Booting fw image ti-pruss/am65x-sr2-pru1-prueth-fw.elf, size 41208
    [    8.796887] remoteproc remoteproc5: unsupported resource 5
    [    8.796916] remoteproc remoteproc5: remote processor 300b8000.pru is now up
    [    8.796960] remoteproc remoteproc6: powering up 30086000.rtu
    [    8.797965] remoteproc remoteproc6: firmware: direct-loading firmware ti-pruss/am65x-sr2-rtu1-prueth-fw.elf
    [    8.797985] remoteproc remoteproc6: Booting fw image ti-pruss/am65x-sr2-rtu1-prueth-fw.elf, size 30124
    [    8.798160] remoteproc remoteproc6: remote processor 30086000.rtu is now up
    [    8.798206] remoteproc remoteproc7: powering up 3008c000.txpru
    [    8.799133] remoteproc remoteproc7: firmware: direct-loading firmware ti-pruss/am65x-sr2-txpru1-prueth-fw.elf
    [    8.799154] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-txpru1-prueth-fw.elf, size 35184
    [    8.799205] remoteproc remoteproc7: remote processor 3008c000.txpru is now up
    [    8.800875] pps pps0: new PPS source ptp0
    [    8.812737] icssg-prueth icssg1-eth eth0: Link is Up - 100Mbps/Full - flow control off
    [    8.934419] icssg-prueth icssg1-eth eth1: Link is Up - 100Mbps/Full - flow control off
    
    

  • The webpage says "On AM64x-evm the DP83869HM are strapped to RGMII configuration by default.", when talking about using the k3-am642-evm-icssg1-dualemac-mii.dtso overlay.  Are there HW changes needed to the eval board to use MII?

  • I've done some investigation of the DP83826 PHY state in our HW.  The RCSR register is showing the PHYs are in RX FIFO OVERRUN and UNDERRUN error condition.

    
    
    ~ # phytool print eth0/0
    ieee-phy: id:0x2000a131
    
       ieee-phy: reg:BMCR(0x00) val:0x3100
          flags:          -reset -loopback +aneg-enable -power-down -isolate -aneg-restart -collision-test
          speed:          100-full
    
       ieee-phy: reg:BMSR(0x01) val:0x786d
          capabilities:   -100-b4 +100-f +100-h +10-f +10-h -100-t2-f -100-t2-h
          flags:          -ext-status +aneg-complete -remote-fault +aneg-capable +link -jabber +ext-register
    ~ # phytool print eth0/2
    ieee-phy: id:0x2000a131
    
       ieee-phy: reg:BMCR(0x00) val:0x3100
          flags:          -reset -loopback +aneg-enable -power-down -isolate -aneg-restart -collision-test
          speed:          100-full
    
       ieee-phy: reg:BMSR(0x01) val:0x786d
          capabilities:   -100-b4 +100-f +100-h +10-f +10-h -100-t2-f -100-t2-h
          flags:          -ext-status +aneg-complete -remote-fault +aneg-capable +link -jabber +ext-register
    ~ #
    
    # Read PHY RCSR
    ~ # phytool eth0/0/0x17
    ieee-phy: reg:0x17 val:0x0049  # eth0 RX FIFO Underflow
    ~ #~ # phytool eth0/2/0x17
    ieee-phy: reg:0x17 val:0x0041  # eth1 RX FIFO Overflow and Underflow
    ~ #
    

  • Hello Bruno,

    I will check with the developer about whether HW modifications to the EVM is required to test out MII. I have a memory that all that was required was to use the different dtbo, but that was a while back and I could be misremembering.

    Regards,

    Nick

  • about whether HW modifications to the EVM is required to test out MII

    Not required on AM64 EVM with DP83869 PHY. PHY supports switching between RGMII/MII using same pins. SoC pinmux and ICSS level pinmux update is required.

  • Hi Nick,

    I noticed the 9.1 SDK came out yesterday.  I decided to try using that on the AM64EVM with the dualemac dtbo files.  I used the wic.gz images direct from the TI website.  I used the uboot boot commands to boot with the overlay files.  The RGMII version works fine.

    When I use the MII version, k3-am642-evm-icssg1-dualemac-mii.dtbo, I get a kernel Oops.  I can still login, but when I enter the ifconfig command the system seems to hang.

    More details here:

    Arago 2023.10 am64xx-evm -
    
    am64xx-evm login: [   24.438871] TI DP83869 300b2400.mdio:0f: selected op-mode is not valid with MII mode
    [   24.452047] icssg-prueth icssg1-eth: couldn't connect to phy ethernet-phy@0
    [   24.465255] Unable to handle kernel NULL pointer dereference at virtual address 0000000000000358
    [   24.474220] Mem abort info:
    [   24.477115]   ESR = 0x0000000096000006
    [   24.480965]   EC = 0x25: DABT (current EL), IL = 32 bits
    [   24.486350]   SET = 0, FnV = 0
    [   24.489476]   EA = 0, S1PTW = 0
    [   24.492803]   FSC = 0x06: level 2 translation fault
    [   24.497864] Data abort info:
    [   24.500951]   ISV = 0, ISS = 0x00000006
    [   24.504904]   CM = 0, WnR = 0
    [   24.507938] user pgtable: 4k pages, 48-bit VAs, pgdp=00000000854c0000
    [   24.514469] [0000000000000358] pgd=08000000854d3003, p4d=08000000854d3003, pud=0800000083fcd003, pmd=0000000000000000
    [   24.525207] Internal error: Oops: 0000000096000006 [#1] PREEMPT SMP
    [   24.531488] Modules linked in: rpmsg_ctrl pci_endpoint_test rpmsg_char cdns3 cdns_usb_common irq_pruss_intc overlay crct10dif_ce icssg_prueth pru_rproc hsr icss_iep cfg80211 phy_can_transceiver pci_j721e_host pci_j721e pcie_cadence_host ti_k3_m4_remoteproc pcie_cadence ti_k3_common ti_k3_r5_remoteproc cdns3_ti k3_j72xx_bandgap virtio_rpmsg_bus rpmsg_ns bluetooth ecdh_generic rti_wdt ecc rfkill sa2ul pruss m_can_platform m_can can_dev pwm_tiecap optee_rng rng_core spi_omap2_mcspi cryptodev(O) fuse drm drm_panel_orientation_quirks ipv6
    [   24.578830] CPU: 1 PID: 9 Comm: kworker/u4:0 Tainted: G           O       6.1.46-g247b2535b2 #1
    [   24.587521] Hardware name: Texas Instruments AM642 EVM (DT)
    [   24.593090] Workqueue: events_unbound deferred_probe_work_func
    [   24.598944] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [   24.605901] pc : phy_attached_print+0x2c/0x1b0
    [   24.610352] lr : phy_attached_info+0x14/0x20
    [   24.614622] sp : ffff80000952ba20
    [   24.617932] x29: ffff80000952ba70 x28: ffff00000788a940 x27: ffff000003f578c0
    [   24.625069] x26: ffff000003f57908 x25: 0000000000040000 x24: ffff0000003c6000
    [   24.632201] x23: ffff0000003c6010 x22: ffff00007fc2ca70 x21: 0000000000000000
    [   24.639329] x20: 0000000000000000 x19: 0000000000000000 x18: 0000000000000000
    [   24.646457] x17: 0000000000000000 x16: 0000000000000000 x15: 00004d9574a7269e
    [   24.653583] x14: 00000000000001ce x13: 00000000000001ce x12: 0000000000000000
    [   24.660710] x11: 0000000000000006 x10: 00000000000009b0 x9 : ffff80000952b7c0
    [   24.667837] x8 : ffff000000158000 x7 : ffff00007fbd31c0 x6 : 0000000000000000
    [   24.674965] x5 : ffff00007fbccb60 x4 : ffff00007fbccb60 x3 : 0000000000000000
    [   24.682092] x2 : 0000000000000000 x1 : 0000000000000000 x0 : 0000000000000000
    [   24.689219] Call trace:
    [   24.691658]  phy_attached_print+0x2c/0x1b0
    [   24.695751]  phy_attached_info+0x14/0x20
    [   24.699665]  prueth_probe+0x47c/0x970 [icssg_prueth]
    [   24.704646]  platform_probe+0x68/0xe0
    [   24.708306]  really_probe+0xbc/0x2dc
    [   24.711876]  __driver_probe_device+0x78/0x114
    [   24.716226]  driver_probe_device+0xd8/0x15c
    [   24.720402]  __device_attach_driver+0xb8/0x134
    [   24.724837]  bus_for_each_drv+0x7c/0xdc
    [   24.728664]  __device_attach+0xac/0x1d0
    [   24.732493]  device_initial_probe+0x14/0x20
    [   24.736670]  bus_probe_device+0x9c/0xa4
    [   24.740498]  deferred_probe_work_func+0x88/0xc0
    [   24.745020]  process_one_work+0x1d4/0x320
    [   24.749028]  worker_thread+0x2c4/0x440
    [   24.752771]  kthread+0x10c/0x110
    [   24.755994]  ret_from_fork+0x10/0x20
    [   24.759571] Code: a9075bf5 aa0103f5 a9080fe2 f9004be4 (f941ac02)
    [   24.765653] ---[ end trace 0000000000000000 ]---
    [   24.775729] remoteproc remoteproc15: powering up 300b4000.pru
    [   24.785950] remoteproc remoteproc15: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 40936
    [   24.795565] remoteproc remoteproc15: unsupported resource 5
    [   24.801202] remoteproc remoteproc15: remote processor 300b4000.pru is now up
    [   24.808328] remoteproc remoteproc16: powering up 30084000.rtu
    [   24.817393] remoteproc remoteproc16: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 30884
    [   24.826883] remoteproc remoteproc16: remote processor 30084000.rtu is now up
    [   24.834016] remoteproc remoteproc7: powering up 3008a000.txpru
    [   24.843151] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 36672
    [   24.852746] remoteproc remoteproc7: remote processor 3008a000.txpru is now up
    [   24.860219] remoteproc remoteproc13: powering up 300b8000.pru
    [   24.869382] remoteproc remoteproc13: Booting fw image ti-pruss/am65x-sr2-pru1-prueth-fw.elf, size 41208
    [   24.878847] remoteproc remoteproc13: unsupported resource 5
    [   24.884455] remoteproc remoteproc13: remote processor 300b8000.pru is now up
    [   24.891578] remoteproc remoteproc14: powering up 30086000.rtu
    [   24.900601] remoteproc remoteproc14: Booting fw image ti-pruss/am65x-sr2-rtu1-prueth-fw.elf, size 30124
    [   24.910077] remoteproc remoteproc14: remote processor 30086000.rtu is now up
    [   24.917175] remoteproc remoteproc8: powering up 3008c000.txpru
    [   24.926423] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-txpru1-prueth-fw.elf, size 35184
    [   24.935985] remoteproc remoteproc8: remote processor 3008c000.txpru is now up
    [   24.944646] pps pps1: new PPS source ptp2
    [   24.952774] Unable to handle kernel NULL pointer dereference at virtual address 00000000000004e8
    [   24.961622] Mem abort info:
    [   24.964455]   ESR = 0x0000000096000006
    [   24.968222]   EC = 0x25: DABT (current EL), IL = 32 bits
    [   24.973649]   SET = 0, FnV = 0
    [   24.976793]   EA = 0, S1PTW = 0
    [   24.979977]   FSC = 0x06: level 2 translation fault
    [   24.984870] Data abort info:
    [   24.987756]   ISV = 0, ISS = 0x00000006
    [   24.991601]   CM = 0, WnR = 0
    [   24.994564] user pgtable: 4k pages, 48-bit VAs, pgdp=00000000836f8000
    [   25.001004] [00000000000004e8] pgd=0800000083d7c003, p4d=0800000083d7c003, pud=0800000083d7b003, pmd=0000000000000000
    [   25.011631] Internal error: Oops: 0000000096000006 [#2] PREEMPT SMP
    [   25.017895] Modules linked in: rpmsg_ctrl pci_endpoint_test rpmsg_char cdns3 cdns_usb_common irq_pruss_intc overlay crct10dif_ce icssg_prueth pru_rproc hsr icss_iep cfg80211 phy_can_transceiver pci_j721e_host pci_j721e pcie_cadence_host ti_k3_m4_remoteproc pcie_cadence ti_k3_common ti_k3_r5_remoteproc cdns3_ti k3_j72xx_bandgap virtio_rpmsg_bus rpmsg_ns bluetooth ecdh_generic rti_wdt ecc rfkill sa2ul pruss m_can_platform m_can can_dev pwm_tiecap optee_rng rng_core spi_omap2_mcspi cryptodev(O) fuse drm drm_panel_orientation_quirks ipv6
    [   25.065222] CPU: 0 PID: 238 Comm: systemd-network Tainted: G      D    O       6.1.46-g247b2535b2 #1
    [   25.074338] Hardware name: Texas Instruments AM642 EVM (DT)
    [   25.079897] pstate: 80000005 (Nzcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [   25.086846] pc : mutex_lock+0x2c/0x6c
    [   25.090514] lr : phy_start+0x20/0xbc
    [   25.094087] sp : ffff80000a023480
    [   25.097391] x29: ffff80000a023480 x28: 0000000000000000 x27: ffff000007888ed8
    [   25.104519] x26: 0000000000000001 x25: ffff000007889480 x24: 0000000000000220
    [   25.111646] x23: ffff000003f57880 x22: 00000000000001e8 x21: 0000000000000001
    [   25.118773] x20: 00000000000004e8 x19: 0000000000000000 x18: 0000000000000000
    [   25.125900] x17: 0000000000000000 x16: 0000000000000000 x15: 0000000000000085
    [   25.133028] x14: 0000091610d7aa2a x13: 0000000000000000 x12: 0000000000000003
    [   25.140154] x11: 0000000000000001 x10: 00000000000009b0 x9 : ffff80000a0232a0
    [   25.147281] x8 : ffff00007fbba180 x7 : 0008000000000100 x6 : 00000012024cf72e
    [   25.154409] x5 : 03ffffffffffffff x4 : 0000000000000000 x3 : 00000000000004e8
    [   25.161536] x2 : ffff000000d4d580 x1 : 0000000000000000 x0 : 00000000000004e8
    [   25.168665] Call trace:
    [   25.171102]  mutex_lock+0x2c/0x6c
    [   25.174414]  emac_ndo_open+0x6e4/0xaac [icssg_prueth]
    [   25.179479]  __dev_open+0xf4/0x1e0
    [   25.182877]  __dev_change_flags+0x198/0x210
    [   25.187052]  dev_change_flags+0x24/0x64
    [   25.190879]  do_setlink+0x238/0xe5c
    [   25.194362]  rtnl_setlink+0xe0/0x180
    [   25.197928]  rtnetlink_rcv_msg+0x130/0x3a0
    [   25.202015]  netlink_rcv_skb+0x60/0x130
    [   25.205846]  rtnetlink_rcv+0x18/0x2c
    [   25.209417]  netlink_unicast+0x2e4/0x340
    [   25.213332]  netlink_sendmsg+0x1b0/0x420
    [   25.217247]  __sys_sendto+0x134/0x170
    [   25.220904]  __arm64_sys_sendto+0x28/0x40
    [   25.224907]  invoke_syscall+0x48/0x114
    [   25.228653]  el0_svc_common.constprop.0+0xd4/0xfc
    [   25.233349]  do_el0_svc+0x20/0x30
    [   25.236657]  el0_svc+0x28/0xa0
    [   25.239709]  el0t_64_sync_handler+0xbc/0x140
    [   25.243969]  el0t_64_sync+0x18c/0x190
    [   25.247631] Code: b5000140 d65f03c0 d2800001 f9800071 (c85ffc60)
    [   25.253713] ---[ end trace 0000000000000000 ]---
    root
    [   30.725965] audit: type=1334 audit(1651168006.888:6): prog-id=9 op=LOAD
    <a bunch of audit messages deleted>
    [   31.272910] audit: type=1334 audit(1651168007.388:11): prog-id=12 op=LOAD
    root@am64xx-evm:~# uname -a
    Linux am64xx-evm 6.1.46-g247b2535b2 #1 SMP PREEMPT Wed Dec  6 17:54:04 UTC 2023 aarch64 aarch64 aarch64 GNU/Linux
    root@am64xx-evm:~# ifconfig
    
    ^C^C^C^C^C
    <hang>

  • I rebuilt the kernel after patching drivers/net/ethernet/ti/icssg_prueth.c so it doesn't crash, I get no ethernet ports, but I noticed some errors relating to RGMII/MII mux control:

    [ 0.511571] pinctrl-single f4000.pinctrl: pin PIN127 already requested by 8000000.ethernet; cannot claim for 8000f00.mdio
    [ 0.511591] pinctrl-single f4000.pinctrl: pin-127 (8000f00.mdio) status -22
    [ 0.511599] pinctrl-single f4000.pinctrl: could not request pin 127 (PIN127) from group mdio1-pins-default on device pinctrl-single
    [ 0.511608] davinci_mdio 8000f00.mdio: Error applying setting, reverse things back

    I'm investigating the dualemac and dualemac-mii dtso files.

    diff --git a/drivers/net/ethernet/ti/icssg_prueth.c b/drivers/net/ethernet/ti/icssg_prueth.c
    index 6ad92f40c..275488f7f 100644
    --- a/drivers/net/ethernet/ti/icssg_prueth.c
    +++ b/drivers/net/ethernet/ti/icssg_prueth.c
    @@ -3325,7 +3325,11 @@ static int prueth_probe(struct platform_device *pdev)
                                              prueth->emac[PRUETH_MAC0]->ndev);
                    prueth->registered_netdevs[PRUETH_MAC0] = prueth->emac[PRUETH_MAC0]->ndev;
     
    -               emac_phy_connect(prueth->emac[PRUETH_MAC0]);
    +               ret = emac_phy_connect(prueth->emac[PRUETH_MAC0]);
    +               if (ret) {
    +                       dev_err(dev, "can't phy connect port MII0");
    +                       goto  netdev_unregister;
    +               }
                    phy_attached_info(prueth->emac[PRUETH_MAC0]->ndev->phydev);
            }
     
    @@ -3339,7 +3343,11 @@ static int prueth_probe(struct platform_device *pdev)
                    devlink_port_type_eth_set(&prueth->emac[PRUETH_MAC1]->devlink_port,
                                              prueth->emac[PRUETH_MAC1]->ndev);
                    prueth->registered_netdevs[PRUETH_MAC1] = prueth->emac[PRUETH_MAC1]->ndev;
    -               emac_phy_connect(prueth->emac[PRUETH_MAC1]);
    +               ret = emac_phy_connect(prueth->emac[PRUETH_MAC1]);
    +               if (ret) {
    +                       dev_err(dev, "can't phy connect for port MII1");
    +                       goto netdev_unregister;
    +               }
                    phy_attached_info(prueth->emac[PRUETH_MAC1]->ndev->phydev);
            }
     
    

  • I patched k3-am642-evm-icssg1-dualemac-mii.dtso to stop trying to set the mix itself.  pinctrl error goes away, but still no prueth interfaces.

    Still getting the errors:

    [23.310072] TI DP83869 300b2400.mdio:0f: selected op-mode is not valid with MII mode
    [ 23.310705] icssg-prueth icssg1-eth: couldn't connect to phy ethernet-phy@0
    [ 23.310713] icssg-prueth icssg1-eth: can't phy connect port MII0

    diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso b/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    index 0d35b55a2..4078f1950 100644
    --- a/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    +++ b/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    @@ -76,7 +76,7 @@
     };
     
     &cpsw3g {
    -       pinctrl-0 = <&mdio1_pins_default &rgmii1_pins_default>;
    +       pinctrl-0 = <&rgmii1_pins_default>;
     };
     
     &cpsw_port2 {
    

  • Hello Bruno,

    Hmm, interesting. I haven't tried the MII devicetree file on kernel 6.1 yet, so I'll try to replicate your results by Friday and reply back.

    Thanks,

    Nick

  • I added a hack to drivers/net/phy/dp83869.c to accept the "MII mode" of 0.  The DP83869 driver code from SDK_0806.  With my other patches, cables plugged in at eth1 and eth2, I get  a kernel dump for TX timeout error:  No other activity on the system, ie no login/ping/etc.

     NETDEV WATCHDOG: eth2 (icssg-prueth): transmit queue 0 timed out

    It's like the MII partners are not both in REAL MII mode, one is still doing RGMII, between DP83869 PHY and PRU FW.

    Log attached here.  Also included patch files for the work I did that can actually be applied (instead of screen scrapes).

    U-Boot SPL 2023.04-gb0d717b732 (Dec 06 2023 - 15:11:45 +0000)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -19
    Resetting on cold boot to workaround ErrataID:i2331
    Please resend tiboot3.bin in case of UART/DFU boot
    resetting ...
    
    U-Boot SPL 2023.04-gb0d717b732 (Dec 06 2023 - 15:11:45 +0000)
    EEPROM not available at 0x50, trying to read at 0x51
    Reading on-board EEPROM at 0x51 failed -19
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)')
    SPL initial stack usage: 13384 bytes
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    Loading Environment from MMC... *** Warning - No MMC card found, using default environment
    
    Authentication passed
    Authentication passed
    Starting ATF on ARM64 core...
    
    NOTICE:  BL31: v2.9(release):v2.9.0-614-gd7a7135d32-dirty
    NOTICE:  BL31: Built : 09:34:15, Aug 24 2023
    I/TC:
    I/TC: OP-TEE version: 4.0.0 (gcc version 11.4.0 (GCC)) #1 Fri Oct 20 18:29:31 UTC 2023 aarch64
    I/TC: WARNING: This OP-TEE configuration might be insecure!
    I/TC: WARNING: Please check https://optee.readthedocs.io/en/latest/architecture/porting_guidelines.html
    I/TC: Primary CPU initializing
    I/TC: SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)')
    I/TC: HUK Initialized
    I/TC: Activated SA2UL device
    I/TC: Enabled firewalls for SA2UL TRNG device
    I/TC: SA2UL TRNG initialized
    I/TC: SA2UL Drivers initialized
    I/TC: Primary CPU switching to normal world boot
    
    U-Boot SPL 2023.04-gb0d717b732 (Dec 06 2023 - 15:11:45 +0000)
    SYSFW ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)')
    Trying to boot from MMC2
    Authentication passed
    Authentication passed
    
    
    U-Boot 2023.04-gb0d717b732 (Dec 06 2023 - 15:11:45 +0000)
    
    SoC:   AM64X SR2.0 HS-FS
    Model: Texas Instruments AM642 EVM
    Board: AM64-EVM rev C
    DRAM:  2 GiB
    Core:  66 devices, 31 uclasses, devicetree: separate
    NAND:  0 MiB
    MMC:   mmc@fa10000: 0, mmc@fa00000: 1
    Loading Environment from nowhere... OK
    In:    serial@2800000
    Out:   serial@2800000
    Err:   serial@2800000
    Unidentified board claims AM64-EVM in eeprom header
    Net:   eth0: ethernet@8000000port@1
    Hit any key to stop autoboot:  0
    =>
    =>
    =>
    =>      setenv name_overlays k3-am642-evm-icssg1-dualemac-mii_mine.dtbo
    => boot
    switch to partitions #0, OK
    mmc1 is current device
    SD/MMC found on device 1
    Failed to load 'boot.scr'
    574 bytes read in 29 ms (18.6 KiB/s)
    Loaded env from uEnv.txt
    Importing environment from mmc1 ...
    ## Error: "main_cpsw0_qsgmii_phyinit" not defined
    20302336 bytes read in 865 ms (22.4 MiB/s)
    59008 bytes read in 34 ms (1.7 MiB/s)
    Working FDT set to 88000000
    2538 bytes read in 32 ms (77.1 KiB/s)
    ## Flattened Device Tree blob at 88000000
       Booting using the fdt blob at 0x88000000
    Working FDT set to 88000000
       Loading Device Tree to 000000008feee000, end 000000008fffffff ... OK
    Working FDT set to 8feee000
    
    Starting kernel ...
    
    [    0.000000] Booting Linux on physical CPU 0x0000000000 [0x410fd034]
    [    0.000000] Linux version 6.1.46-dirty (bittnbr@ubuntu) (aarch64-oe-linux-gcc (GCC) 11.4.0, GNU ld (GNU Binutils) 2.38.20220708) #2 SMP PREEMPT Thu Dec 21 17:57:24 CET 2023
    [    0.000000] Machine model: Texas Instruments AM642 EVM
    [    0.000000] earlycon: ns16550a0 at MMIO32 0x0000000002800000 (options '')
    [    0.000000] printk: bootconsole [ns16550a0] enabled
    [    0.000000] efi: UEFI not found.
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a0000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a0100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a0100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a1000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a1100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a1100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a2000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a2100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a2100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-dma-memory@a3000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a3100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node r5f-memory@a3100000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4000000, size 1 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-dma-memory@a4000000, compatible id shared-dma-pool
    [    0.000000] Reserved memory: created DMA memory pool at 0x00000000a4100000, size 15 MiB
    [    0.000000] OF: reserved mem: initialized node m4f-memory@a4100000, compatible id shared-dma-pool
    [    0.000000] Zone ranges:
    [    0.000000]   DMA      [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000]   DMA32    empty
    [    0.000000]   Normal   empty
    [    0.000000] Movable zone start for each node
    [    0.000000] Early memory node ranges
    [    0.000000]   node   0: [mem 0x0000000080000000-0x000000009e7fffff]
    [    0.000000]   node   0: [mem 0x000000009e800000-0x00000000a57fffff]
    [    0.000000]   node   0: [mem 0x00000000a5800000-0x00000000ffffffff]
    [    0.000000] Initmem setup node 0 [mem 0x0000000080000000-0x00000000ffffffff]
    [    0.000000] cma: Reserved 32 MiB at 0x00000000fba00000
    [    0.000000] psci: probing for conduit method from DT.
    [    0.000000] psci: PSCIv1.1 detected in firmware.
    [    0.000000] psci: Using standard PSCI v0.2 function IDs
    [    0.000000] psci: Trusted OS migration not required
    [    0.000000] psci: SMC Calling Convention v1.4
    [    0.000000] percpu: Embedded 19 pages/cpu s37992 r8192 d31640 u77824
    [    0.000000] Detected VIPT I-cache on CPU0
    [    0.000000] CPU features: detected: GIC system register CPU interface
    [    0.000000] CPU features: detected: ARM erratum 845719
    [    0.000000] alternatives: applying boot alternatives
    [    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 516096
    [    0.000000] Kernel command line: console=ttyS2,115200n8 earlycon=ns16550a,mmio32,0x02800000 omap2-nand.0:2m(NAND.tiboot3),2m(NAND.tispl),2m(NAND.tiboot3.backup),4m(NAND.u-boot),256k(NAND.u-boot-env),256k(NAND.u-boot-env.backup),-(NAND.file-system) root=PARTUUID=0cc0f25a-02 rw rootfstype=ext4 rootwait
    [    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes, linear)
    [    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes, linear)
    [    0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off
    [    0.000000] Memory: 1889208K/2097152K available (12288K kernel code, 1266K rwdata, 4020K rodata, 2112K init, 438K bss, 175176K reserved, 32768K cma-reserved)
    [    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
    [    0.000000] rcu: Preemptible hierarchical RCU implementation.
    [    0.000000] rcu:     RCU event tracing is enabled.
    [    0.000000] rcu:     RCU restricting CPUs from NR_CPUS=256 to nr_cpu_ids=2.
    [    0.000000]  Trampoline variant of Tasks RCU enabled.
    [    0.000000]  Tracing variant of Tasks RCU enabled.
    [    0.000000] rcu: RCU calculated value of scheduler-enlistment delay is 25 jiffies.
    [    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
    [    0.000000] NR_IRQS: 64, nr_irqs: 64, preallocated irqs: 0
    [    0.000000] GICv3: GIC: Using split EOI/Deactivate mode
    [    0.000000] GICv3: 256 SPIs implemented
    [    0.000000] GICv3: 0 Extended SPIs implemented
    [    0.000000] Root IRQ handler: gic_handle_irq
    [    0.000000] GICv3: GICv3 features: 16 PPIs
    [    0.000000] GICv3: CPU0: found redistributor 0 region 0:0x0000000001840000
    [    0.000000] ITS [mem 0x01820000-0x0182ffff]
    [    0.000000] GIC: enabling workaround for ITS: Socionext Synquacer pre-ITS
    [    0.000000] ITS@0x0000000001820000: Devices Table too large, reduce ids 20->19
    [    0.000000] ITS@0x0000000001820000: allocated 524288 Devices @80800000 (flat, esz 8, psz 64K, shr 0)
    [    0.000000] ITS: using cache flushing for cmd queue
    [    0.000000] GICv3: using LPI property table @0x0000000080030000
    [    0.000000] GIC: using cache flushing for LPI property table
    [    0.000000] GICv3: CPU0: using allocated LPI pending table @0x0000000080040000
    [    0.000000] rcu: srcu_init: Setting srcu_struct sizes based on contention.
    [    0.000000] arch_timer: cp15 timer(s) running at 200.00MHz (phys).
    [    0.000000] clocksource: arch_sys_counter: mask: 0x3ffffffffffffff max_cycles: 0x2e2049d3e8, max_idle_ns: 440795210634 ns
    [    0.000000] sched_clock: 58 bits at 200MHz, resolution 5ns, wraps every 4398046511102ns
    [    0.008606] Console: colour dummy device 80x25
    [    0.013204] Calibrating delay loop (skipped), value calculated using timer frequency.. 400.00 BogoMIPS (lpj=800000)
    [    0.023884] pid_max: default: 32768 minimum: 301
    [    0.028661] LSM: Security Framework initializing
    [    0.033530] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.041115] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes, linear)
    [    0.051096] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.058567] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.064873] cblist_init_generic: Setting adjustable number of callback queues.
    [    0.072266] cblist_init_generic: Setting shift to 1 and lim to 1.
    [    0.078676] rcu: Hierarchical SRCU implementation.
    [    0.083584] rcu:     Max phase no-delay instances is 1000.
    [    0.089251] Platform MSI: msi-controller@1820000 domain created
    [    0.095657] PCI/MSI: /bus@f4000/interrupt-controller@1800000/msi-controller@1820000 domain created
    [    0.105157] EFI services will not be available.
    [    0.110127] smp: Bringing up secondary CPUs ...
    I/TC: Secondary CPU 1 initializing
    I/TC: Secondary CPU 1 switching to normal world boot
    [    0.123778] Detected VIPT I-cache on CPU1
    [    0.123921] GICv3: CPU1: found redistributor 1 region 0:0x0000000001860000
    [    0.123942] GICv3: CPU1: using allocated LPI pending table @0x0000000080050000
    [    0.124002] CPU1: Booted secondary processor 0x0000000001 [0x410fd034]
    [    0.124132] smp: Brought up 1 node, 2 CPUs
    [    0.153512] SMP: Total of 2 processors activated.
    [    0.158325] CPU features: detected: 32-bit EL0 Support
    [    0.163595] CPU features: detected: CRC32 instructions
    [    0.168909] CPU: All CPU(s) started at EL2
    [    0.173096] alternatives: applying system-wide alternatives
    [    0.180734] devtmpfs: initialized
    [    0.193875] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
    [    0.203893] futex hash table entries: 512 (order: 3, 32768 bytes, linear)
    [    0.212257] pinctrl core: initialized pinctrl subsystem
    [    0.218313] DMI not present or invalid.
    [    0.223032] NET: Registered PF_NETLINK/PF_ROUTE protocol family
    [    0.230428] DMA: preallocated 256 KiB GFP_KERNEL pool for atomic allocations
    [    0.237893] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA pool for atomic allocations
    [    0.246016] DMA: preallocated 256 KiB GFP_KERNEL|GFP_DMA32 pool for atomic allocations
    [    0.254222] audit: initializing netlink subsys (disabled)
    [    0.260148] audit: type=2000 audit(0.164:1): state=initialized audit_enabled=0 res=1
    [    0.260773] thermal_sys: Registered thermal governor 'step_wise'
    [    0.268086] thermal_sys: Registered thermal governor 'power_allocator'
    [    0.274506] cpuidle: using governor menu
    [    0.285436] hw-breakpoint: found 6 breakpoint and 4 watchpoint registers.
    [    0.292450] ASID allocator initialised with 65536 entries
    [    0.312196] KASLR disabled due to lack of seed
    [    0.325222] HugeTLB: registered 1.00 GiB page size, pre-allocated 0 pages
    [    0.332194] HugeTLB: 0 KiB vmemmap can be freed for a 1.00 GiB page
    [    0.338601] HugeTLB: registered 32.0 MiB page size, pre-allocated 0 pages
    [    0.345535] HugeTLB: 0 KiB vmemmap can be freed for a 32.0 MiB page
    [    0.351939] HugeTLB: registered 2.00 MiB page size, pre-allocated 0 pages
    [    0.358876] HugeTLB: 0 KiB vmemmap can be freed for a 2.00 MiB page
    [    0.365281] HugeTLB: registered 64.0 KiB page size, pre-allocated 0 pages
    [    0.372217] HugeTLB: 0 KiB vmemmap can be freed for a 64.0 KiB page
    [    0.380550] k3-chipinfo 43000014.chipid: Family:AM64X rev:SR2.0 JTAGID[0x1bb3802f] Detected
    [    0.391115] iommu: Default domain type: Translated
    [    0.396119] iommu: DMA domain TLB invalidation policy: strict mode
    [    0.402890] SCSI subsystem initialized
    [    0.407234] usbcore: registered new interface driver usbfs
    [    0.412903] usbcore: registered new interface driver hub
    [    0.418367] usbcore: registered new device driver usb
    [    0.424049] pps_core: LinuxPPS API ver. 1 registered
    [    0.429133] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 Rodolfo Giometti <giometti@linux.it>
    [    0.438482] PTP clock support registered
    [    0.442633] EDAC MC: Ver: 3.0.0
    [    0.447100] omap-mailbox 29020000.mailbox: omap mailbox rev 0x66fc9100
    [    0.454068] omap-mailbox 29040000.mailbox: omap mailbox rev 0x66fc9100
    [    0.460920] omap-mailbox 29060000.mailbox: omap mailbox rev 0x66fc9100
    [    0.468199] FPGA manager framework
    [    0.471809] Advanced Linux Sound Architecture Driver Initialized.
    [    0.479298] clocksource: Switched to clocksource arch_sys_counter
    [    0.485878] VFS: Disk quotas dquot_6.6.0
    [    0.489959] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 bytes)
    [    0.504312] NET: Registered PF_INET protocol family
    [    0.509647] IP idents hash table entries: 32768 (order: 6, 262144 bytes, linear)
    [    0.519369] tcp_listen_portaddr_hash hash table entries: 1024 (order: 2, 16384 bytes, linear)
    [    0.528210] Table-perturb hash table entries: 65536 (order: 6, 262144 bytes, linear)
    [    0.536159] TCP established hash table entries: 16384 (order: 5, 131072 bytes, linear)
    [    0.544384] TCP bind hash table entries: 16384 (order: 7, 524288 bytes, linear)
    [    0.552419] TCP: Hash tables configured (established 16384 bind 16384)
    [    0.559401] UDP hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.566335] UDP-Lite hash table entries: 1024 (order: 3, 32768 bytes, linear)
    [    0.573909] NET: Registered PF_UNIX/PF_LOCAL protocol family
    [    0.580307] RPC: Registered named UNIX socket transport module.
    [    0.586413] RPC: Registered udp transport module.
    [    0.591223] RPC: Registered tcp transport module.
    [    0.596030] RPC: Registered tcp NFSv4.1 backchannel transport module.
    [    0.602622] NET: Registered PF_XDP protocol family
    [    0.607559] PCI: CLS 0 bytes, default 64
    [    0.612429] hw perfevents: enabled with armv8_cortex_a53 PMU driver, 7 counters available
    [    0.622634] Initialise system trusted keyrings
    [    0.627569] workingset: timestamp_bits=46 max_order=19 bucket_order=0
    [    0.639689] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [    0.646478] NFS: Registering the id_resolver key type
    [    0.651766] Key type id_resolver registered
    [    0.656045] Key type id_legacy registered
    [    0.660209] nfs4filelayout_init: NFSv4 File Layout Driver Registering...
    [    0.667063] nfs4flexfilelayout_init: NFSv4 Flexfile Layout Driver Registering...
    [    0.717450] Key type asymmetric registered
    [    0.721654] Asymmetric key parser 'x509' registered
    [    0.726707] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 245)
    [    0.734514] io scheduler mq-deadline registered
    [    0.739162] io scheduler kyber registered
    [    0.746707] pinctrl-single 4084000.pinctrl: 33 pins, size 132
    [    0.753354] pinctrl-single f4000.pinctrl: 180 pins, size 720
    [    0.760396] pinctrl-single a40000.pinctrl: 512 pins, size 2048
    [    0.773802] Serial: 8250/16550 driver, 12 ports, IRQ sharing enabled
    [    0.791659] loop: module loaded
    [    0.796220] megasas: 07.719.03.00-rc1
    [    0.803806] tun: Universal TUN/TAP device driver, 1.6
    [    0.809852] thunder_xcv, ver 1.0
    [    0.813226] thunder_bgx, ver 1.0
    [    0.816571] nicpf, ver 1.0
    [    0.819517] e1000: Intel(R) PRO/1000 Network Driver
    [    0.824509] e1000: Copyright (c) 1999-2006 Intel Corporation.
    [    0.830434] e1000e: Intel(R) PRO/1000 Network Driver
    [    0.835507] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
    [    0.841606] igb: Intel(R) Gigabit Ethernet Network Driver
    [    0.847126] igb: Copyright (c) 2007-2014 Intel Corporation.
    [    0.852851] igbvf: Intel(R) Gigabit Virtual Function Network Driver
    [    0.859257] igbvf: Copyright (c) 2009 - 2012 Intel Corporation.
    [    0.865467] sky2: driver version 1.30
    [    0.870070] VFIO - User Level meta-driver version: 0.3
    [    0.876340] usbcore: registered new interface driver usb-storage
    [    0.883228] i2c_dev: i2c /dev entries driver
    [    0.888816] sdhci: Secure Digital Host Controller Interface driver
    [    0.895191] sdhci: Copyright(c) Pierre Ossman
    [    0.899881] sdhci-pltfm: SDHCI platform and OF driver helper
    [    0.906394] ledtrig-cpu: registered to indicate activity on CPUs
    [    0.912794] SMCCC: SOC_ID: ARCH_SOC_ID not implemented, skipping ....
    [    0.919756] usbcore: registered new interface driver usbhid
    [    0.925472] usbhid: USB HID core driver
    [    0.930479] optee: probing for conduit method.
    I/TC: Reserved shared memory is enabled
    I/TC: Dynamic shared memory is enabled
    I/TC: Normal World virtualization support is disabled
    I/TC: Asynchronous notifications are disabled
    [    0.935091] optee: revision 4.0 (2a5b1d12)
    [    0.951801] optee: dynamic shared memory is enabled
    [    0.961473] optee: initialized driver
    [    0.967725] Initializing XFRM netlink socket
    [    0.972163] NET: Registered PF_PACKET protocol family
    [    0.977457] Key type dns_resolver registered
    [    0.982396] registered taskstats version 1
    [    0.986644] Loading compiled-in X.509 certificates
    [    1.003177] ti-sci 44043000.system-controller: ABI: 3.1 (firmware rev 0x0009 '9.1.8--v09.01.08 (Kool Koala)')
    [    1.049800] pca953x 0-0022: supply vcc not found, using dummy regulator
    [    1.056799] pca953x 0-0022: using AI
    [    1.084633] omap_i2c 20010000.i2c: bus 0 rev0.12 at 400 kHz
    [    1.090863] ti-sci-intr bus@f4000:interrupt-controller@a00000: Interrupt Router 3 domain created
    [    1.100262] ti-sci-inta 48000000.interrupt-controller: Interrupt Aggregator domain 28 created
    [    1.112367] ti-udma 485c0100.dma-controller: Number of rings: 68
    [    1.119973] ti-udma 485c0100.dma-controller: Channels: 24 (bchan: 12, tchan: 6, rchan: 6)
    [    1.130196] ti-udma 485c0000.dma-controller: Number of rings: 288
    [    1.145634] ti-udma 485c0000.dma-controller: Channels: 44 (tchan: 29, rchan: 15)
    [    1.156690] printk: console [ttyS2] disabled
    [    1.161162] 2800000.serial: ttyS2 at MMIO 0x2800000 (irq = 304, base_baud = 3000000) is a 8250
    [    1.170061] printk: console [ttyS2] enabled
    [    1.170061] printk: console [ttyS2] enabled
    [    1.178522] printk: bootconsole [ns16550a0] disabled
    [    1.178522] printk: bootconsole [ns16550a0] disabled
    [    1.193229] spi-nor spi0.0: s28hs512t (65536 Kbytes)
    [    1.198381] 7 fixed-partitions partitions found on MTD device fc40000.spi.0
    [    1.205365] Creating 7 MTD partitions on "fc40000.spi.0":
    [    1.210761] 0x000000000000-0x000000100000 : "ospi.tiboot3"
    [    1.217716] 0x000000100000-0x000000300000 : "ospi.tispl"
    [    1.224492] 0x000000300000-0x000000700000 : "ospi.u-boot"
    [    1.231353] 0x000000700000-0x000000740000 : "ospi.env"
    [    1.237857] 0x000000740000-0x000000780000 : "ospi.env.backup"
    [    1.244996] 0x000000800000-0x000003fc0000 : "ospi.rootfs"
    [    1.251893] 0x000003fc0000-0x000004000000 : "ospi.phypattern"
    [    1.267910] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [    1.311353] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [    1.320438] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83867
    [    1.328615] am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
    [    1.341437] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [    1.348570] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512
    [    1.355248] pps pps0: new PPS source ptp0
    [    1.359778] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [    1.370910] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [    1.381122] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [    1.392660] mmc0: CQHCI version 5.10
    [    1.396847] gpio-mux mux-controller: 2-way mux-controller registered
    [    1.416798] mmc1: CQHCI version 5.10
    [    1.416865] debugfs: Directory 'pd:114' with parent 'pm_genpd' already present!
    [    1.438021] ALSA device list:
    [    1.441049]   No soundcards found.
    [    1.443872] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit
    [    1.463344] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [    1.471461] Waiting for root device PARTUUID=0cc0f25a-02...
    [    1.529671] mmc1: new ultra high speed SDR104 SDHC card at address aaaa
    [    1.537832] mmcblk1: mmc1:aaaa SC16G 14.8 GiB
    [    1.544284] mmc0: Command Queue Engine enabled
    [    1.548795] mmc0: new HS200 MMC card at address 0001
    [    1.553823]  mmcblk1: p1 p2
    [    1.557943] mmcblk0: mmc0:0001 S0J56X 14.8 GiB
    [    1.565146] mmcblk0boot0: mmc0:0001 S0J56X 31.5 MiB
    [    1.571607] mmcblk0boot1: mmc0:0001 S0J56X 31.5 MiB
    [    1.577759] mmcblk0rpmb: mmc0:0001 S0J56X 4.00 MiB, chardev (240:0)
    [    1.622853] EXT4-fs (mmcblk1p2): mounted filesystem with ordered data mode. Quota mode: none.
    [    1.631513] VFS: Mounted root (ext4 filesystem) on device 179:2.
    [    1.641489] devtmpfs: mounted
    [    1.646105] Freeing unused kernel memory: 2112K
    [    1.650861] Run /sbin/init as init process
    [    1.827031] systemd[1]: System time before build time, advancing clock.
    [    1.920357] NET: Registered PF_INET6 protocol family
    [    1.926954] Segment Routing with IPv6
    [    1.930733] In-situ OAM (IOAM) with IPv6
    [    1.965444] systemd[1]: systemd 250.5+ running in system mode (+PAM -AUDIT -SELINUX -APPARMOR +IMA -SMACK +SECCOMP -GCRYPT -GNUTLS -OPENSSL +ACL +BLKID -CURL -ELFUTILS -FIDO2 -IDN2 -IDN -IPTC +KMOD -LIBCRYPTSETUP +LIBFDISK -PCRE2 -PWQUALITY -P11KIT -QRENCODE -BZIP2 -LZ4 -XZ -ZLIB +ZSTD -BPF_FRAMEWORK +XKBCOMMON +UTMP +SYSVINIT default-hierarchy=hybrid)
    [    1.997385] systemd[1]: Detected architecture arm64.
    
    Welcome to Arago 2023.10!
    
    [    2.074560] systemd[1]: Hostname set to <am64xx-evm>.
    [    2.217454] systemd-sysv-generator[139]: SysV service '/etc/init.d/sysrepo' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    2.242608] systemd-sysv-generator[139]: SysV service '/etc/init.d/netopeer2-server' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    2.267464] systemd-sysv-generator[139]: SysV service '/etc/init.d/thermal-zone-init' lacks a native systemd unit file. Automatically generating a unit file for compatibility. Please update package to include a native systemd unit file, in order to make it more safe and robust.
    [    2.581034] systemd[1]: /lib/systemd/system/bt-enable.service:9: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    2.678782] systemd[1]: /etc/systemd/system/sync-clocks.service:11: Standard output type syslog is obsolete, automatically updating to journal. Please update your unit file, and consider removing the setting altogether.
    [    2.781518] systemd[1]: Queued start job for default target Graphical Interface.
    [    2.851240] systemd[1]: Created slice Slice /system/getty.
    [  OK  ] Created slice Slice /system/getty.
    [    2.875209] systemd[1]: Created slice Slice /system/modprobe.
    [  OK  ] Created slice Slice /system/modprobe.
    [    2.899414] systemd[1]: Created slice Slice /system/serial-getty.
    [  OK  ] Created slice Slice /system/serial-getty.
    [    2.926431] systemd[1]: Created slice User and Session Slice.
    [  OK  ] Created slice User and Session Slice.
    [    2.948006] systemd[1]: Started Dispatch Password Requests to Console Directory Watch.
    [  OK  ] Started Dispatch Password �ts to Console Directory Watch.
    [    2.971920] systemd[1]: Started Forward Password Requests to Wall Directory Watch.
    [  OK  ] Started Forward Password R�uests to Wall Directory Watch.
    [    2.996118] systemd[1]: Reached target Path Units.
    [  OK  ] Reached target Path Units.
    [    3.011623] systemd[1]: Reached target Remote File Systems.
    [  OK  ] Reached target Remote File Systems.
    [    3.031605] systemd[1]: Reached target Slice Units.
    [  OK  ] Reached target Slice Units.
    [    3.047645] systemd[1]: Reached target Swaps.
    [  OK  ] Reached target Swaps.
    [    3.113855] systemd[1]: Listening on RPCbind Server Activation Socket.
    [  OK  ] Listening on RPCbind Server Activation Socket.
    [    3.139675] systemd[1]: Reached target RPC Port Mapper.
    [  OK  ] Reached target RPC Port Mapper.
    [    3.169517] systemd[1]: Listening on Process Core Dump Socket.
    [  OK  ] Listening on Process Core Dump Socket.
    [    3.192102] systemd[1]: Listening on initctl Compatibility Named Pipe.
    [  OK  ] Listening on initctl Compatibility Named Pipe.
    [    3.216688] systemd[1]: Listening on Journal Audit Socket.
    [  OK  ] Listening on Journal Audit Socket.
    [    3.240380] systemd[1]: Listening on Journal Socket (/dev/log).
    [  OK  ] Listening on Journal Socket (/dev/log).
    [    3.264492] systemd[1]: Listening on Journal Socket.
    [  OK  ] Listening on Journal Socket.
    [    3.280792] systemd[1]: Listening on Network Service Netlink Socket.
    [  OK  ] Listening on Network Service Netlink Socket.
    [    3.304584] systemd[1]: Listening on udev Control Socket.
    [  OK  ] Listening on udev Control Socket.
    [    3.328266] systemd[1]: Listening on udev Kernel Socket.
    [  OK  ] Listening on udev Kernel Socket.
    [    3.352441] systemd[1]: Listening on User Database Manager Socket.
    [  OK  ] Listening on User Database Manager Socket.
    [    3.404118] systemd[1]: Mounting Huge Pages File System...
             Mounting Huge Pages File System...
    [    3.426207] systemd[1]: Mounting POSIX Message Queue File System...
             Mounting POSIX Message Queue File System...
    [    3.468092] systemd[1]: Mounting Kernel Debug File System...
             Mounting Kernel Debug File System...
    [    3.484189] systemd[1]: Kernel Trace File System was skipped because of a failed condition check (ConditionPathExists=/sys/kernel/tracing).
    [    3.506705] systemd[1]: Mounting Temporary Directory /tmp...
             Mounting Temporary Directory /tmp...
    [    3.531944] systemd[1]: Starting Create List of Static Device Nodes...
             Starting Create List of Static Device Nodes...
    [    3.562091] systemd[1]: Starting Load Kernel Module configfs...
             Starting Load Kernel Module configfs...
    [    3.586084] systemd[1]: Starting Load Kernel Module drm...
             Starting Load Kernel Module drm...
    [    3.610678] systemd[1]: Starting Load Kernel Module fuse...
             Starting Load Kernel Module fuse...
    [    3.662156] systemd[1]: Starting RPC Bind...
             Starting RPC Bind...[    3.668305] fuse: init (API version 7.37)
    
    [    3.683977] systemd[1]: File System Check on Root Device was skipped because of a failed condition check (ConditionPathIsReadWrite=!/).
    [    3.720670] systemd[1]: Starting Journal Service...
             Starting Journal Service...
    [    3.749148] systemd[1]: Starting Load Kernel Modules...
             Starting Load Kernel Modules...
    [    3.792774] systemd[1]: Starting Generate network units from Kernel command line...
             Starting Generate network �ts from Kernel command line...
    [    3.825605] systemd[1]: Starting Remount Root and Kernel File Systems...
             Starting Remount Root and Kernel File Systems...
    [    3.851746] systemd[1]: Starting Coldplug All udev Devices...
             Starting Coldplug All udev Devices...
    [    3.889734] systemd[1]: Started RPC Bind.
    [  OK  ] Started RPC Bind.
    [    3.908677] systemd[1]: Mounted Huge Pages File System.
    [  OK  ] Mounted Huge Pages File System.
    [    3.927860] EXT4-fs (mmcblk1p2): re-mounted. Quota mode: none.
    [    3.939155] systemd[1]: Mounted POSIX Message Queue File System.
    [  OK  ] Mounted POSIX Message Queue File System.
    [    3.968613] systemd[1]: Started Journal Service.
    [  OK  ] Started Journal Service.
    [  OK  ] Mounted Kernel Debug File System.
    [  OK  ] Mounted Temporary Directory /tmp.
    [  OK  ] Finished Create List of Static Device Nodes.
    [  OK  ] Finished Load Kernel Module configfs.
    [  OK  ] Finished Load Kernel Module drm.
    [  OK  ] Finished Load Kernel Module fuse.
    [  OK  ] Finished Load Kernel Modules.
    [  OK  ] Finished Generate network units from Kernel command line.
    [  OK  ] Finished Remount Root and Kernel File Systems.
             Mounting FUSE Control File System...
             Mounting Kernel Configuration File System...
             Starting Flush Journal to Persistent Storage...
             Starting Apply Kernel Variables...
             Starting Create Static Device Nodes in /dev...
    [    4.305614] systemd-journald[154]: Received client request to flush runtime journal.
    [  OK  ] Mounted FUSE Control File System.
    [  OK  ] Mounted Kernel Configuration File System.
    [  OK  ] Finished Flush Journal to Persistent Storage.
    [  OK  ] Finished Apply Kernel Variables.
    [  OK  ] Finished Create Static Device Nodes in /dev.
    [  OK  ] Reached target Preparation for Local File Systems.
             Mounting /media/ram...
             Mounting /var/volatile...
    [    4.498578] audit: type=1334 audit(1651167747.668:2): prog-id=5 op=LOAD
    [    4.508849] audit: type=1334 audit(1651167747.676:3): prog-id=6 op=LOAD
             Starting Rule-based Manage�for Device Events and Files...
    [  OK  ] Mounted /media/ram.
    [  OK  ] Mounted /var/volatile.
             Starting Load/Save Random Seed...
    [  OK  ] Reached target Local File Systems.
             Starting Create Volatile Files and Directories...
    [  OK  ] Finished Coldplug All udev Devices.
    [  OK  ] Finished Create Volatile Files and Directories.
             Starting Network Time Synchronization...
             Starting Record System Boot/Shutdown in UTMP...
    [  OK  ] Started Rule-based Manager for Device Events and Files.
    [  OK  ] Finished Record System Boot/Shutdown in UTMP.
    [  OK  ] Started Network Time Synchronization.
    [  OK  ] Reached target System Initialization.
    [  OK  ] Started Timer service to update the IP on OLED each 10s.
    [  OK  ] Started Daily Cleanup of Temporary Directories.
    [  OK  ] Reached target System Time Set.[    5.659367] random: crng init done
    
    [  OK  ] Started Daily rotation of log files.
    [  OK  ] Reached target Timer Units.
    [  OK  ] Listening on Avahi mDNS/DNS-SD Stack Activation Socket.
    [  OK  ] Listening on D-Bus System Message Bus Socket.
             Starting Docker Socket for the API...
    [  OK  ] Listening on dropbear.socket.
    [  OK  ] Listening on PC/SC Smart Card Daemon Activation Socket.
             Starting Console System Startup Logging...
             Starting D-Bus System Message Bus...
             Starting Reboot and dump vmcore via kexec...
    [  OK  ] Finished Load/Save Random Seed.
    [  OK  ] Listening on Docker Socket for the API.
    [  OK  ] Finished Console System Startup Logging.
    [  OK  ] Finished Reboot and dump vmcore via kexec.
    [  OK  ] Reached target Socket Units.
    [    6.049038] CAN device driver interface
    [  OK  ] Found device /dev/ttyS2.
    [  OK  ] Started D-Bus System Message Bus.
    [  OK  ] Reached target Basic System.
    [  OK  ] Started Job spooling tools.
    [  OK  ] Started Periodic Command Scheduler.
             Starting DEMO...
             Starting Print notice about GPLv3 packages...
             Starting IPv6 Packet Filtering Framework...
             Starting IPv4 Packet Filtering Framework...
    [  OK  ] Started irqbalance daemon.
             Starting Telephony service...
             Starting Expand the rootfs�ll size of the boot device....
    [    6.399996] audit: type=1334 audit(1651172129.368:4): prog-id=7 op=LOAD
    [    6.411843] audit: type=1334 audit(1651172129.376:5): prog-id=8 op=LOAD
             Starting User Login Management...
    [  OK  ] Started TEE Supplicant.
             Starting Telnet Server...
    [  OK  ] Finished IPv6 Packet Filtering Framework.
    [  OK  ] Finished IPv4 Packet Filtering Framework.
    [  OK  ] Reached target Preparation for Network.
             Starting Network Configuration...
    [  OK  ] Finished Telnet Server.
    [  OK  ] Started Telephony service.
    [    6.601024] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
    [    6.657194] davinci_mdio 300b2400.mdio: davinci mdio revision 1.7, bus freq 1000000
    [  OK  ] Started DEMO.
    [    6.879240] Bluetooth: Core ver 2.22
    [    6.883200] NET: Registered PF_BLUETOOTH protocol family
    [    6.889683] Bluetooth: HCI device and connection manager initialized
    [    6.896852] Bluetooth: HCI socket layer initialized
    [    6.902347] Bluetooth: L2CAP socket layer initialized
    [    6.908083] Bluetooth: SCO socket layer initialized
    [    7.045456] davinci_mdio 300b2400.mdio: phy[15]: device 300b2400.mdio:0f, driver TI DP83869
    [  OK  ] Finished Expand the rootfs�full size of the boot device..
    [    7.349183] k3-m4-rproc 5000000.m4fss: assigned reserved memory node m4f-dma-memory@a4000000
    [    7.364989] k3-m4-rproc 5000000.m4fss: configured M4 for remoteproc mode
    [    7.375820] k3-m4-rproc 5000000.m4fss: local reset is deasserted for device
    [    7.512034] remoteproc remoteproc0: 5000000.m4fss is available
    [    7.552676] remoteproc remoteproc0: powering up 5000000.m4fss
    [    7.558689] remoteproc remoteproc0: Booting fw image am64-mcu-m4f0_0-fw, size 86084
    [    7.574870] rproc-virtio rproc-virtio.0.auto: assigned reserved memory node m4f-dma-memory@a4000000
    [    7.584778] rproc-virtio rproc-virtio.0.auto: registered virtio0 (type 7)
    [    7.593748] remoteproc remoteproc0: remote processor 5000000.m4fss is now up
    [    7.766664] cfg80211: Loading compiled-in X.509 certificates for regulatory database
    [  OK  ] Started User Login Management.
    [    7.825413] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
    [  OK  ] Started Network Configuration.
             Starting Wait for Network to be Configured...
             Starting Network Name Resolution...
    [    8.073055] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:00] driver [TI DP83867] (irq=POLL)
    [    8.091056] am65-cpsw-nuss 8000000.ethernet eth0: configuring for phy/rgmii-rxid link mode
    [    8.132165] virtio_rpmsg_bus virtio0: rpmsg host is online
    [    8.133015] virtio_rpmsg_bus virtio0: creating channel ti.ipc4.ping-pong addr 0xd
    [    8.148573] virtio_rpmsg_bus virtio0: creating channel rpmsg_chrdev addr 0xe
    [    8.274239] platform 78000000.r5f: configured R5F for remoteproc mode
    [    8.290187] m_can_platform 20701000.can: m_can device registered (irq=506, version=32)
    [    8.327495] j721e-pcie-host f102000.pcie: host bridge /bus@f4000/pcie@f102000 ranges:
    [    8.337349] m_can_platform 20711000.can: m_can device registered (irq=507, version=32)
    [    8.358620] platform 78000000.r5f: assigned reserved memory node r5f-dma-memory@a0000000
    [    8.425710] j721e-pcie-host f102000.pcie:       IO 0x0068001000..0x0068010fff -> 0x0068001000
    [    8.457617] j721e-pcie-host f102000.pcie:      MEM 0x0068011000..0x006fffffff -> 0x0068011000
    [    8.486688] j721e-pcie-host f102000.pcie:   IB MEM 0x0000000000..0x0fffffffff -> 0x0000000000
    [    8.514315] remoteproc remoteproc1: 78000000.r5f is available
    [    8.538052] remoteproc remoteproc1: powering up 78000000.r5f
    [    8.544019] remoteproc remoteproc1: Booting fw image am64-main-r5f0_0-fw, size 86352
    [    8.547914] platform 78200000.r5f: configured R5F for remoteproc mode
    [    8.560530] rproc-virtio rproc-virtio.1.auto: assigned reserved memory node r5f-dma-memory@a0000000
    [    8.588650] virtio_rpmsg_bus virtio1: rpmsg host is online
    [    8.589010] virtio_rpmsg_bus virtio1: creating channel rpmsg_chrdev addr 0xe
    [    8.594292] rproc-virtio rproc-virtio.1.auto: registered virtio1 (type 7)
    [    8.608086] remoteproc remoteproc1: remote processor 78000000.r5f is now up
    [    8.709129] platform 78200000.r5f: assigned reserved memory node r5f-dma-memory@a1000000
    [    8.799575] remoteproc remoteproc2: 78200000.r5f is available
    [    8.926785] remoteproc remoteproc2: powering up 78200000.r5f
    [    8.934256] remoteproc remoteproc2: Booting fw image am64-main-r5f0_1-fw, size 141772
    [    8.946179] rproc-virtio rproc-virtio.2.auto: assigned reserved memory node r5f-dma-memory@a1000000
    [    8.959591] virtio_rpmsg_bus virtio2: rpmsg host is online
    [    8.965464] rproc-virtio rproc-virtio.2.auto: registered virtio2 (type 7)
    [    8.972480] remoteproc remoteproc2: remote processor 78200000.r5f is now up
    [    8.979697] virtio_rpmsg_bus virtio2: creating channel rpmsg_chrdev addr 0xe
    [    9.020801] platform 78400000.r5f: configured R5F for remoteproc mode
    [  OK  ] Started Network Name Resolution.
    [  OK  ] Reached target Network.
    [  OK  ] Reached target Host and Network Name Lookups.
    [    9.106871] platform 78400000.r5f: assigned reserved memory node r5f-dma-memory@a2000000
             Starting Avahi mDNS/DNS-SD Stack...
             Starting Enable and configure wl18xx bluetooth stack...
             Starting containerd container runtime...
    [  OK  ] Started Netperf Benchmark Server.
    [  OK  ] Started NFS status monitor for NFSv2/3 locking..
             Starting Simple Network Ma�ent Protocol (SNMP) Daemon....
             Starting Permit User Sessions...
    [  OK  ] Finished Enable and configure wl18xx bluetooth stack.
    [  OK  ] Started Avahi mDNS/DNS-SD Stack.
    [  OK  ] Finished Permit User Sessions.
    [    9.528952] remoteproc remoteproc3: 78400000.r5f is available
    [    9.531790] j721e-pcie-host f102000.pcie: PCI host bridge to bus 0000:00
    [  OK  ] Started Getty on tty1.
    [  OK  ] Started Serial Getty on ttyS2.
    [  OK  ] Reached target Login Prompts.
             Starting Synchronize System and HW clocks...
    [FAILED] Failed to start Synchronize System and HW clocks.
    See 'systemctl status sync-clocks.service'[    9.655968] remoteproc remoteproc3: powering up 78400000.r5f
     for details.
    [    9.666763] remoteproc remoteproc3: Booting fw image am64-main-r5f1_0-fw, size 93260
    [    9.667683] platform 78600000.r5f: configured R5F for remoteproc mode
    [    9.682736] rproc-virtio rproc-virtio.3.auto: assigned reserved memory node r5f-dma-memory@a2000000
    [    9.694808] virtio_rpmsg_bus virtio3: rpmsg host is online
    [    9.695462] virtio_rpmsg_bus virtio3: creating channel rpmsg_chrdev addr 0xe
    [    9.700507] rproc-virtio rproc-virtio.3.auto: registered virtio3 (type 7)
    [    9.719509] remoteproc remoteproc3: remote processor 78400000.r5f is now up
    [    9.742586] pci_bus 0000:00: root bus resource [bus 00-ff]
    [    9.790892] platform 78600000.r5f: assigned reserved memory node r5f-dma-memory@a3000000
    [    9.815461] pci_bus 0000:00: root bus resource [io  0x0000-0xffff] (bus address [0x68001000-0x68010fff])
    [    9.876801] remoteproc remoteproc4: 78600000.r5f is available
    [    9.888363] pci_bus 0000:00: root bus resource [mem 0x68011000-0x6fffffff]
    [    9.906227] pci 0000:00:00.0: [104c:b010] type 01 class 0x060400
    [    9.973383] remoteproc remoteproc4: powering up 78600000.r5f
    [    9.979386] remoteproc remoteproc4: Booting fw image am64-main-r5f1_1-fw, size 91520
    [    9.992937] rproc-virtio rproc-virtio.4.auto: assigned reserved memory node r5f-dma-memory@a3000000
    [   10.002986] virtio_rpmsg_bus virtio4: rpmsg host is online
    [   10.015551] rproc-virtio rproc-virtio.4.auto: registered virtio4 (type 7)
    [   10.022503] remoteproc remoteproc4: remote processor 78600000.r5f is now up
    [   10.029678] virtio_rpmsg_bus virtio4: creating channel rpmsg_chrdev addr 0xe
    [   10.035469] pci 0000:00:00.0: reg 0x10: [mem 0x00000000-0xfffffffff 64bit pref]
    [   10.138323] pci 0000:00:00.0: supports D1
    [   10.143136] pci 0000:00:00.0: PME# supported from D0 D1 D3hot
    [   10.157545] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
    [   10.167059] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
    [   10.180176] pci 0000:00:00.0: BAR 0: no space for [mem size 0x1000000000 64bit pref]
    [   10.197583] pci 0000:00:00.0: BAR 0: failed to assign [mem size 0x1000000000 64bit pref]
    [   10.209539] pci 0000:00:00.0: PCI bridge to [bus 01]
    [   10.316522] pcieport 0000:00:00.0: PME: Signaling with IRQ 511
    [   10.479656] pcieport 0000:00:00.0: AER: enabled with IRQ 511
    [   10.491058] remoteproc remoteproc5: 3000a000.txpru is available
    [   10.502306] remoteproc remoteproc6: 3000c000.txpru is available
    [   10.515233] remoteproc remoteproc7: 3008a000.txpru is available
    [   10.522907] remoteproc remoteproc8: 3008c000.txpru is available
    [  OK  ] Started Simple Network Man�ement Protocol (SNMP) Daemon..
    [  OK  ] Started containerd container runtime.
    [   13.096225] remoteproc remoteproc9: 300b8000.pru is available
    [   13.107836] remoteproc remoteproc10: 30086000.rtu is available
    [   13.114833] remoteproc remoteproc11: 30084000.rtu is available
    [   13.132341] remoteproc remoteproc12: 30038000.pru is available
    [   13.144494] remoteproc remoteproc13: 30006000.rtu is available
    [   13.157310] remoteproc remoteproc14: 30034000.pru is available
    [   13.167832] remoteproc remoteproc15: 30004000.rtu is available
    [   13.181759] remoteproc remoteproc16: 300b4000.pru is available
    [  OK  ] Listening on Load/Save RF �itch Status /dev/rfkill Watch.
    ***************************************************************
    ***************************************************************
    NOTICE: This file system contains the following GPL-3.0 packages:
            adwaita-icon-theme-symbolic
            autoconf
            bash-dev
            bash
            bc
            binutils
            cifs-utils
            coreutils-stdbuf
            coreutils
            cpio
            cpp-symlinks
            cpp
            dosfstools
            elfutils
            g++-symlinks
            g++
            gawk
            gcc-symlinks
            gcc
            gdb
            gdbserver
            gettext
            glmark2
            gnu-config
            grub-common
            grub-editenv
            grub-efi
            gzip
            hidapi
            less
            libasm1
            libatomic-dev
            libatomic1
            libbfd
            libdebuginfod1
            libdw1
            libelf1
            libgcc-s-dev
            libgcc1
            libgdbm-compat4
            libgdbm-dev
            libgdbm6
            libgettextlib
            libgettextsrc
            libgmp10
            libidn2-0
            libmpc3
            libmpfr6
            libopcodes
            libqt5charts-examples
            libqt5charts-plugins
            libqt5charts-qmlplugins
            libqt5charts5
            libqt5sensors-plugins
            libqt5sensors-qmlplugins
            libqt5sensors5
            libqt5serialport-examples
            libqt5serialport-plugins
            libqt5serialport-qmlplugins
            libqt5serialport5
            libqt5svg-examples
            libqt5svg-plugins
            libqt5svg-qmlplugins
            libqt5svg5
            libqt5virtualkeyboard-plugins
            libqt5virtualkeyboard-qmlplugins
            libqt5virtualkeyboard5
            libqt5webchannel-plugins
            libqt5webchannel-qmlplugins
            libqt5webchannel5
            libreadline-dev
            libreadline8
            libstdc++-dev
            libstdc++6
            libunistring2
            m4-dev
            m4
            make
            nettle
            parted
            piglit
            qt3d-plugins
            qt3d-qmlplugins
            qt3d
            qtbase-examples
            qtbase-plugins
            qtbase-qmlplugins
            qtbase
            qtconnectivity-plugins
            qtconnectivity-qmlplugins
            qtconnectivity
            qtdeclarative-plugins
            qtdeclarative-qmlplugins
            qtdeclarative-tools
            qtdeclarative
            qtgraphicaleffects-qmlplugins
            qtlocation-examples
            qtlocation-plugins
            qtlocation-qmlplugins
            qtlocation
            qtmultimedia-examples
            qtmultimedia-plugins
            qtmultimedia-qmlplugins
            qtmultimedia
            qtquics-qmlplugins.control
            qtquics2-plugins.control
            qtquics2-qmlplugins.control
            qtquics2.control
            qtscript-examples
            qtscript-plugins
            qtscript-qmlplugins
            qtscript
            qtwayland-examples
            qtwayland-plugins
            qtwayland-qmlplugins
            qtwayland
            tar
            which
    
    If you do not wish to distribute GPL-3.0 components please remove
    the above packages prior to distribution.  This can be done using
    the opkg remove command.  i.e.:
        opkg remove <package>
    Where <package> is the name printed in the list above
    
    NOTE: If the package is a dependency of another package you
          will be notified of the dependent packages.  You should
          use the --force-removal-of-dependent-packages option to
          also remove the dependent packages as well
    ***************************************************************
    ***************************************************************
    [  OK  ] Created slice Slice /system/systemd-fsck.
    [  OK  ] Finished Print notice about GPLv3 packages.
    
     _____                    _____           _         _
    |  _  |___ ___ ___ ___   |  _  |___ ___  |_|___ ___| |_
    |     |  _| .'| . | . |  |   __|  _| . | | | -_|  _|  _|
    |__|__|_| |__,|_  |___|  |__|  |_| |___|_| |___|___|_|
                  |___|                    |___|
    
    Arago Project am64xx-evm -
    
    Arago 2023.10 am64xx-evm -
    
    am64xx-evm login: [   23.931730] TI DP83869 300b2400.mdio:0f: attached PHY driver (mii_bus:phy_addr=300b2400.mdio:0f, irq=POLL)
    [   23.956321] TI DP83869 mdio_mux-0.0:03: attached PHY driver (mii_bus:phy_addr=mdio_mux-0.0:03, irq=POLL)
    [   23.966281] icssg-prueth icssg1-eth: TI PRU ethernet driver initialized: dual EMAC mode
    [   24.117737] remoteproc remoteproc16: powering up 300b4000.pru
    [   24.128953] remoteproc remoteproc16: Booting fw image ti-pruss/am65x-sr2-pru0-prueth-fw.elf, size 40936
    [   24.143519] remoteproc remoteproc16: unsupported resource 5
    [   24.154086] remoteproc remoteproc16: remote processor 300b4000.pru is now up
    [   24.161404] remoteproc remoteproc11: powering up 30084000.rtu
    [   24.170506] remoteproc remoteproc11: Booting fw image ti-pruss/am65x-sr2-rtu0-prueth-fw.elf, size 30884
    [   24.179990] remoteproc remoteproc11: remote processor 30084000.rtu is now up
    [   24.187090] remoteproc remoteproc7: powering up 3008a000.txpru
    [   24.196186] remoteproc remoteproc7: Booting fw image ti-pruss/am65x-sr2-txpru0-prueth-fw.elf, size 36672
    [   24.205748] remoteproc remoteproc7: remote processor 3008a000.txpru is now up
    [   24.213187] remoteproc remoteproc9: powering up 300b8000.pru
    [   24.222327] remoteproc remoteproc9: Booting fw image ti-pruss/am65x-sr2-pru1-prueth-fw.elf, size 41208
    [   24.231699] remoteproc remoteproc9: unsupported resource 5
    [   24.237220] remoteproc remoteproc9: remote processor 300b8000.pru is now up
    [   24.244252] remoteproc remoteproc10: powering up 30086000.rtu
    [   24.253251] remoteproc remoteproc10: Booting fw image ti-pruss/am65x-sr2-rtu1-prueth-fw.elf, size 30124
    [   24.262721] remoteproc remoteproc10: remote processor 30086000.rtu is now up
    [   24.269820] remoteproc remoteproc8: powering up 3008c000.txpru
    [   24.278969] remoteproc remoteproc8: Booting fw image ti-pruss/am65x-sr2-txpru1-prueth-fw.elf, size 35184
    [   24.288549] remoteproc remoteproc8: remote processor 3008c000.txpru is now up
    [   24.297152] pps pps1: new PPS source ptp2
    [   27.372444] icssg-prueth icssg1-eth eth2: Link is Up - 100Mbps/Full - flow control off
    [   27.380440] IPv6: ADDRCONF(NETDEV_CHANGE): eth2: link becomes ready
    [   28.396137] icssg-prueth icssg1-eth eth1: Link is Up - 100Mbps/Full - flow control off
    [   28.404132] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
    [  543.083300] ------------[ cut here ]------------
    [  543.087952] NETDEV WATCHDOG: eth2 (icssg-prueth): transmit queue 0 timed out
    [  543.095062] WARNING: CPU: 0 PID: 0 at net/sched/sch_generic.c:525 dev_watchdog+0x214/0x220
    [  543.103343] Modules linked in: pci_endpoint_test rpmsg_ctrl rpmsg_char cdns3 cdns_usb_common irq_pruss_intc crct10dif_ce icssg_prueth pru_rproc hsr icss_iep overlay pci_j721e_host pci_j721e phy_can_transceiver ti_k3_r5_remoteproc pcie_cadence_host virtio_rpmsg_bus pcie_cadence rpmsg_ns cdns3_ti rti_wdt cfg80211 ti_k3_m4_remoteproc ti_k3_common bluetooth k3_j72xx_bandgap ecdh_generic ecc rfkill sa2ul pruss m_can_platform m_can spi_omap2_mcspi can_dev pwm_tiecap optee_rng rng_core fuse drm drm_panel_orientation_quirks ipv6
    [  543.149544] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 6.1.46-dirty #2
    [  543.155974] Hardware name: Texas Instruments AM642 EVM (DT)
    [  543.161534] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [  543.168483] pc : dev_watchdog+0x214/0x220
    [  543.172485] lr : dev_watchdog+0x214/0x220
    [  543.176485] sp : ffff800008003e30
    [  543.179789] x29: ffff800008003e30 x28: 0000000000000005 x27: 0000000000000020
    [  543.186917] x26: ffff800008a9a0c0 x25: ffff8000092279c0 x24: ffff00007fbba1a8
    [  543.194044] x23: ffff800009227000 x22: 0000000000000000 x21: ffff0000013c239c
    [  543.201171] x20: ffff0000013c2000 x19: ffff0000013c2448 x18: ffffffffffffffff
    [  543.208298] x17: ffff800076afc000 x16: ffff800008000000 x15: ffff800088003ab7
    [  543.215425] x14: 0000000000000000 x13: ffff8000092413d0 x12: 000000000000058e
    [  543.222552] x11: 00000000000001da x10: ffff8000092993d0 x9 : ffff8000092413d0
    [  543.229679] x8 : 00000000ffffefff x7 : ffff8000092993d0 x6 : 0000000000000000
    [  543.236807] x5 : ffff00007fbb9b60 x4 : 0000000000000040 x3 : 0000000000000001
    [  543.243934] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffff8000092329c0
    [  543.251062] Call trace:
    [  543.253500]  dev_watchdog+0x214/0x220
    [  543.257158]  call_timer_fn.constprop.0+0x24/0x80
    [  543.261772]  __run_timers.part.0+0x1f4/0x234
    [  543.266033]  run_timer_softirq+0x3c/0x7c
    [  543.269947]  _stext+0x124/0x2a4
    [  543.273082]  ____do_softirq+0x10/0x20
    [  543.276736]  call_on_irq_stack+0x24/0x4c
    [  543.280651]  do_softirq_own_stack+0x1c/0x30
    [  543.284825]  __irq_exit_rcu+0xcc/0xf4
    [  543.288481]  irq_exit_rcu+0x10/0x20
    [  543.291961]  el1_interrupt+0x38/0x70
    [  543.295535]  el1h_64_irq_handler+0x18/0x2c
    [  543.299624]  el1h_64_irq+0x64/0x68
    [  543.303017]  arch_cpu_idle+0x18/0x2c
    [  543.306584]  default_idle_call+0x30/0x6c
    [  543.310501]  do_idle+0x248/0x2c0
    [  543.313727]  cpu_startup_entry+0x24/0x30
    [  543.317642]  kernel_init+0x0/0x130
    [  543.321036]  arch_post_acpi_subsys_init+0x0/0x18
    [  543.325649]  start_kernel+0x650/0x694
    [  543.329306]  __primary_switched+0xbc/0xc4
    [  543.333310] ---[ end trace 0000000000000000 ]---
    
    am64xx-evm login: root
    [ 2582.533056] audit: type=1334 audit(1651174705.500:6): prog-id=9 op=LOAD
    [ 2582.540370] audit: type=1334 audit(1651174705.508:7): prog-id=10 op=LOAD
    [ 2582.979392] audit: type=1006 audit(1651174705.944:8): pid=1123 uid=0 old-auid=4294967295 auid=0 tty=(none) old-ses=4294967295 ses=1 res=1
    [ 2582.992880] audit: type=1300 audit(1651174705.944:8): arch=c00000b7 syscall=64 success=yes exit=1 a0=8 a1=ffffcf6e80b8 a2=1 a3=ffffaa4d9020 items=0 ppid=1 pid=1123 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=1 comm="(systemd)" exe="/lib/systemd/systemd" key=(null)
    [ 2583.019539] audit: type=1327 audit(1651174705.944:8): proctitle="(systemd)"
    [ 2583.034093] audit: type=1334 audit(1651174706.000:9): prog-id=11 op=LOAD
    [ 2583.040994] audit: type=1300 audit(1651174706.000:9): arch=c00000b7 syscall=280 success=yes exit=8 a0=5 a1=fffffd3f0860 a2=78 a3=0 items=0 ppid=1 pid=1123 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=1 comm="systemd" exe="/lib/systemd/systemd" key=(null)
    [ 2583.068000] audit: type=1327 audit(1651174706.000:9): proctitle="(systemd)"
    [ 2583.076100] audit: type=1334 audit(1651174706.000:10): prog-id=11 op=UNLOAD
    [ 2583.084110] audit: type=1334 audit(1651174706.000:11): prog-id=12 op=LOAD
    root@am64xx-evm:~# ifconfig
    eth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
            ether 34:08:e1:80:a9:5a  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 0  bytes 0 (0.0 B)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet6 fe80::72ff:76ff:fe1e:a0bc  prefixlen 64  scopeid 0x20<link>
            ether 70:ff:76:1e:a0:bc  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 34  bytes 6400 (6.2 KiB)
            TX errors 404  dropped 0 overruns 0  carrier 0  collisions 0
    
    eth2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
            inet6 fe80::72ff:76ff:fe1e:a0be  prefixlen 64  scopeid 0x20<link>
            ether 70:ff:76:1e:a0:be  txqueuelen 1000  (Ethernet)
            RX packets 0  bytes 0 (0.0 B)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 34  bytes 6400 (6.2 KiB)
            TX errors 384  dropped 0 overruns 0  carrier 0  collisions 0
    
    lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
            inet 127.0.0.1  netmask 255.0.0.0
            inet6 ::1  prefixlen 128  scopeid 0x10<host>
            loop  txqueuelen 1000  (Local Loopback)
            RX packets 93  bytes 7714 (7.5 KiB)
            RX errors 0  dropped 0  overruns 0  frame 0
            TX packets 93  bytes 7714 (7.5 KiB)
            TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    
    root@am64xx-evm:~# uname -a
    Linux am64xx-evm 6.1.46-dirty #2 SMP PREEMPT Thu Dec 21 17:57:24 CET 2023 aarch64 aarch64 aarch64 GNU/Linux
    r
    root@am64xx-evm:~#
    

    diff --git a/drivers/net/phy/dp83869.c b/drivers/net/phy/dp83869.c
    index fa8c6fdcf..185c5cc48 100644
    --- a/drivers/net/phy/dp83869.c
    +++ b/drivers/net/phy/dp83869.c
    @@ -695,10 +695,11 @@ static int dp83869_configure_mode(struct phy_device *phydev,
     	phy_ctrl_val = dp83869->mode;
     	if (phydev->interface == PHY_INTERFACE_MODE_MII) {
     		if (dp83869->mode == DP83869_100M_MEDIA_CONVERT ||
    -		    dp83869->mode == DP83869_RGMII_100_BASE) {
    +		    dp83869->mode == DP83869_RGMII_100_BASE ||
    +		    dp83869->mode == 0) {
     			phy_ctrl_val |= DP83869_OP_MODE_MII;
     		} else {
    -			phydev_err(phydev, "selected op-mode is not valid with MII mode\n");
    +		  phydev_err(phydev, "selected op-mode (0x%x) is not valid with MII mode\n", dp83869->mode);
     			return -EINVAL;
     		}
     	}
    
    diff --git a/drivers/net/ethernet/ti/icssg_prueth.c b/drivers/net/ethernet/ti/icssg_prueth.c
    index 6ad92f40c..275488f7f 100644
    --- a/drivers/net/ethernet/ti/icssg_prueth.c
    +++ b/drivers/net/ethernet/ti/icssg_prueth.c
    @@ -3325,7 +3325,11 @@ static int prueth_probe(struct platform_device *pdev)
     					  prueth->emac[PRUETH_MAC0]->ndev);
     		prueth->registered_netdevs[PRUETH_MAC0] = prueth->emac[PRUETH_MAC0]->ndev;
     
    -		emac_phy_connect(prueth->emac[PRUETH_MAC0]);
    +		ret = emac_phy_connect(prueth->emac[PRUETH_MAC0]);
    +		if (ret) {
    +			dev_err(dev, "can't phy connect port MII0");
    +			goto  netdev_unregister;
    +		}
     		phy_attached_info(prueth->emac[PRUETH_MAC0]->ndev->phydev);
     	}
     
    @@ -3339,7 +3343,11 @@ static int prueth_probe(struct platform_device *pdev)
     		devlink_port_type_eth_set(&prueth->emac[PRUETH_MAC1]->devlink_port,
     					  prueth->emac[PRUETH_MAC1]->ndev);
     		prueth->registered_netdevs[PRUETH_MAC1] = prueth->emac[PRUETH_MAC1]->ndev;
    -		emac_phy_connect(prueth->emac[PRUETH_MAC1]);
    +		ret = emac_phy_connect(prueth->emac[PRUETH_MAC1]);
    +		if (ret) {
    +			dev_err(dev, "can't phy connect for port MII1");
    +			goto netdev_unregister;
    +		}
     		phy_attached_info(prueth->emac[PRUETH_MAC1]->ndev->phydev);
     	}
     
    
    diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso b/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    index 0d35b55a2..4078f1950 100644
    --- a/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    +++ b/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    @@ -76,7 +76,7 @@
     };
     
     &cpsw3g {
    -	pinctrl-0 = <&mdio1_pins_default &rgmii1_pins_default>;
    +	pinctrl-0 = <&rgmii1_pins_default>;
     };
     
     &cpsw_port2 {
    

  • I believe the PHY should be in MII mode, value 0x0020 written to PHY register DP83869_OP_MODE (0x01df) .

    I also tried the value 0x0060 as suggested in https://www.ti.com/lit/an/snla318/snla318.pdf  at page 11.

    TX timeout still occurs.

  • Hello Bruno,

    I got this from the developer today:

    "I remember seeing the same issue while working on mii mode for upstream recently. I also tested this with ti-linux-kernel but it might have been possible I didn't use the latest one. I did the testing now and I can also see mii mode not working in ti-linux-kernel.

    I got the same error while working for upstream, the crash / failure seems to be result of two issues,

    1) PIN 127 is getting requested twice, once by 8000000.ethernet and once by 8000f00.mdio. Fix for this is to remove &mdio1_pins_default from pinctrl for cpsw3g in the mii dtso file. DIFF here

    diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso b/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    index 0d35b55a293e..4078f1950fac 100644
    --- a/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    +++ b/arch/arm64/boot/dts/ti/k3-am642-evm-icssg1-dualemac-mii.dtso
    @@ -76,7 +76,7 @@
     };
     
     &cpsw3g {
    -       pinctrl-0 = <&mdio1_pins_default &rgmii1_pins_default>;
    +       pinctrl-0 = <&rgmii1_pins_default>;
     };
     
     &cpsw_port2 {

    2) The upstream commit 94e86ef1b801 (TI kernel equivalent e18f05b1b91d) added  a check before setting the MII bit. Wwhen the phy-mode is "mii", the if check sets the MII bit only if the op-mode is either DP83869_100M_MEDIA_CONVERT or DP83869_RGMII_100_BASE. But the default op-mode is 0 i.e. DP83869_RGMII_COPPER_ETHERNET in our case. Due to which this if condition fails and mii mode doesn't work. I tried explicitly setting the op-mode to both DP83869_100M_MEDIA_CONVERT or DP83869_RGMII_100_BASE by changing the DT. But with these op-modes mii doesn't work. MII mode on ICSSG1 in AM64x-EVM only works with op-mode DP83869_RGMII_COPPER_ETHERNET. So the fix for this is to add this mode as well in the if check or remove op-mode if check completely and set MII bit whenever phy-mode is "mii". DIFF here:

    diff --git a/drivers/net/phy/dp83869.c b/drivers/net/phy/dp83869.c
    index fa8c6fdcf301..d7aaefb5226b 100644
    --- a/drivers/net/phy/dp83869.c
    +++ b/drivers/net/phy/dp83869.c
    @@ -695,7 +695,8 @@ static int dp83869_configure_mode(struct phy_device *phydev,
            phy_ctrl_val = dp83869->mode;
            if (phydev->interface == PHY_INTERFACE_MODE_MII) {
                    if (dp83869->mode == DP83869_100M_MEDIA_CONVERT ||
    -                   dp83869->mode == DP83869_RGMII_100_BASE) {
    +                   dp83869->mode == DP83869_RGMII_100_BASE ||
    +                   dp83869->mode == DP83869_RGMII_COPPER_ETHERNET) {
                            phy_ctrl_val |= DP83869_OP_MODE_MII;
                    } else {
                            phydev_err(phydev, "selected op-mode is not valid with MII mode\n");

    With these two changes I was able to get MII mode working in upstream kernel. Both ICSSG interfaces came up and were able to ping / dhcp.
    However, even with these changes I don't see MII mode working in ti-linux-kernel. The crash is no longer seen with these fixes, the interfaces do come up but ping / dhcp doesn't work. On checking the stats, seems like RX isn't working. I think there might be some dependency missing in ti-linux-kernel which is already present in upstream.

    "

    Regards,

    Nick

  • Thanks Nick,

    I'm not sure where the "upstream kernel" is?  Is it at kernel.org?  I assume ti-linux-kernel is from  https://git.ti.com/git/ti-linux-kernel/ti-linux-kernel.git, and upstream from there is kernel.org?

  • I tried some kernels from https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel to get MII mode prueth operating:

    From 89103c6bb5c8228178bf373bfe8e2256ba91e908 (HEAD -> ti-linux-6.1.y-cicd) built with SDK9.1 defconfig, I get tx timeout kernel dump and no pings work.

    From 0f40022e0c2e8f087c6fcd6b7f6abb21c23faea9 (HEAD -> ti-linux-6.6.y-cicd) built, I can't get  any prueth interfaces.  Possibly a defconfig problem?  I used defconfig from the ti-linux-6.6 sources.  

    Can you get me the repo the developer used for successful MII prueth operation, along with the defconfig used?

  • Hello Bruno,

    Still on vacation until Friday, so this response will be brief.

    We are currently working on ti-linux-6.1.y-cicd at least until the Spring 2024 release of the SDK (SDK 9.2), and then the devs won't start porting code to a later kernel version until after that. So I would not be surprised if no PRU Eth support on kernel 6.6.

    Yep, that's where I get ti-linux-kernel, and kernel.org should be upstream.

    I'll check with the developer. If I haven't responded by Monday, please ping the thread.

    Regards,

    Nick

  • From the dev:

    I had last tested MII mode on linux-next branch next-20231211. I used the default config only. (make defconfig).

    On branch next-20231211 I had got MII mode working for AM64x with these diffs: <I think he linked to the diffs I include in the prior response, no time to check today>

    Regards,

    Nick

  • Thanks Nick, I appreciate you helping during your vacation.

    It's still not clear to me in what repo to find "linux-next branch next-20231211". 

    There are no pru/icss files at https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/net/ethernet/ti?h=linux-rolling-lts

    I found a TI linux-next branch that looks like it hasn't been touched for a long time at https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/log/?h=linux-next

    I'm familiar with the patches.  I posted them here 2 weeks ago.  I recommend making the fix to drivers/net/ethernet/ti/icssg_prueth.c in a patch I give above that prevents crash when the driver can't connect to the PHY (wrong mdio bus address).

  • I built linux-next branch next-20231211 according to the instructions I found above.  MII mode is working now.

    I'm using the devicetree files from SDK 9.01.  Along with the patches given above, I found that I had to make the following change to get the prueth driver to start properly:

    diff --git a/arch/arm64/boot/dts/ti/k3-am642-evm.dts b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
    index 671c62bfc..fd81e2e5d 100644
    --- a/arch/arm64/boot/dts/ti/k3-am642-evm.dts
    +++ b/arch/arm64/boot/dts/ti/k3-am642-evm.dts
    @@ -242,7 +242,7 @@
    ti,mii-g-rt = <&icssg1_mii_g_rt>;
    ti,mii-rt = <&icssg1_mii_rt>;
    ti,pa-stats = <&icssg1_pa_stats>;
    - iep = <&icssg1_iep0>, <&icssg1_iep1>;
    + ti,iep = <&icssg1_iep0>, <&icssg1_iep1>;

    interrupt-parent = <&icssg1_intc>;
    interrupts = <24 0 2>, <25 1 3>;

  • We can consider the issue resolved.  It looks it is already, but a lot of helpful discussion  happened after the initial mark of "resolved".  No more discussion on this matter at this time.

  • Sounds good, thank you for the tests and the feedback Bruno!

    Regards,

    Nick