AM6422: PHY DP83822 can't work at interrupt

Part Number: AM6422

Hello,

We found that When the PHY DP83822 is configured in interrupt mode, after repeated plugging and unplugging multiple times, the eth port fails to link up, and subsequent plugging and unplugging also cannot restore the link. Checking /proc/interrupts shows no increase in interrupt counts. However, the issue can be recovered by running sudo ip link set eth1 down and then sudo ip link set eth1 up 

DTS file:

    cpsw3g_phy1_irq_pins_default: cpsw3g-phy1-irq-pins-default {
        pinctrl-single,pins = <
            AM64X_IOPAD(0x0114, PIN_INPUT, 7) /* (Y12) PRG1_PRU1_GPO3.GPIO0_68 */
        >;
    };

&cpsw3g_mdio {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&mdio1_pins_default>;    cpsw3g_phy1: ethernet-phy@1 {
        /* RMII1 -- 01 */
        reg = <1>;
        pinctrl-names = "default";
        pinctrl-0 = <&cpsw3g_phy1_irq_pins_default>;
        interrupt-parent = <&main_gpio0>;
        interrupts = <68 IRQ_TYPE_EDGE_FALLING>;
    };
};

 

log:

AUGOS/arm64: aug@aug in ~
$ cat /proc/interrupts |  grep 'Edge'
337:         23          0      GPIO   0 Edge    -davinci_gpio  spi1.0
351:         23          0      GPIO  14 Edge    -davinci_gpio  spi2.0
434:          5          0      GPIO  68 Edge    -davinci_gpio  8000f00.mdio:01
445:          9          0      GPIO  79 Edge    -davinci_gpio  8000f00.mdio:00
AUGOS/arm64: aug@aug in ~
$ cat /proc/interrupts |  grep 'Edge'
337:         23          0      GPIO   0 Edge    -davinci_gpio  spi1.0
351:         23          0      GPIO  14 Edge    -davinci_gpio  spi2.0
434:          5          0      GPIO  68 Edge    -davinci_gpio  8000f00.mdio:01
445:          9          0      GPIO  79 Edge    -davinci_gpio  8000f00.mdio:00
AUGOS/arm64: aug@aug in ~
$ cat /proc/interrupts |  grep 'Edge'
337:         23          0      GPIO   0 Edge    -davinci_gpio  spi1.0
351:         25          0      GPIO  14 Edge    -davinci_gpio  spi2.0
434:          5          0      GPIO  68 Edge    -davinci_gpio  8000f00.mdio:01
445:          9          0      GPIO  79 Edge    -davinci_gpio  8000f00.mdio:00
AUGOS/arm64: aug@aug in ~
$ cat /proc/interrupts |  grep 'Edge'
337:         23          0      GPIO   0 Edge    -davinci_gpio  spi1.0
351:         25          0      GPIO  14 Edge    -davinci_gpio  spi2.0
434:          5          0      GPIO  68 Edge    -davinci_gpio  8000f00.mdio:01
445:          9          0      GPIO  79 Edge    -davinci_gpio  8000f00.mdio:00
AUGOS/arm64: aug@aug in ~
$ cat /proc/interrupts |  grep 'Edge'
337:         23          0      GPIO   0 Edge    -davinci_gpio  spi1.0
351:         25          0      GPIO  14 Edge    -davinci_gpio  spi2.0
434:          5          0      GPIO  68 Edge    -davinci_gpio  8000f00.mdio:01
445:          9          0      GPIO  79 Edge    -davinci_gpio  8000f00.mdio:00

 

SDK Version: 09.00.00.006 with 'gpio: davinci: fix lazy disable' patch

http://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/commit/drivers/gpio/gpio-davinci.c?h=ti-linux-6.1.y&id=3d7ecc91fe2d723cd4ddb150c9c44a96090c7aa5

  • Hello,

    I test on SDK 11.02.08.02,  same issue report.

  • Hi 

    Could you please help to share your feedback here?

    Thanks

    Zekun

  • Hello,

    The latest SDK 12.01.00.05.03 reports same issue.

  • Hi,

    To my knowledge the MDIO driver should be polling the PHY to detect a link is present, I am not sure an interrupt will work. Could you please attach a console log when doing the cable plug sequence. 

    Which interface CPSW or ICSS?

    Best Regards,

    Schuyler

  • Hello,

        1. CPSW interface

        2. phy.log is a complete console log

        3. "Jul 29 04:36:01 aug kernel: [ 6287.259925] am65-cpsw-nuss 8000000.ethernet eth1: Link is Down" is the last detect phy down. After this cable unplug, the interface can not link up anymore.

    6283.phy.log

  • Hello,

    Seems the whole log can not be uploaded. please refer the last two unplug log:


    Jul 29 04:30:22 aug kernel: [ 5948.331927] am65-cpsw-nuss 8000000.ethernet eth1: Link is Up - 100Mbps/Full - flow control off
    Jul 29 04:30:22 aug kernel: [ 5948.331987] br-lan: port 2(eth1) entered blocking state
    Jul 29 04:30:22 aug netifd[395]: Network device 'eth1' link is up
    Jul 29 04:30:22 aug kernel: [ 5948.345585] br-lan: port 1(eth0) entered blocking state
    Jul 29 04:30:22 aug kernel: [ 5948.347764] br-lan: port 2(eth1) entered learning state
    Jul 29 04:30:22 aug kernel: [ 5948.347987] br-lan: port 2(eth1) entered forwarding state
    Jul 29 04:30:22 aug mstpd[497]: set_if_up: Port eth1 : up
    Jul 29 04:30:22 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth0:0 entering blocking state
    Jul 29 04:30:22 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth1:0 entering learning state
    Jul 29 04:30:22 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth1:0 entering forwarding state
    Jul 29 04:30:22 aug mstpd[497]: MSTP_OUT_flush_all_fids: br-lan:eth0:0 Flushing forwarding database
    Jul 29 04:30:22 aug kernel: [ 5948.356792] br-lan: port 1(eth0) entered learning state
    Jul 29 04:30:22 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:30:22 aug mstpd[497]: set_if_up: Port eth1 : up
    Jul 29 04:30:22 aug kernel: [ 5948.361784] br-lan: port 1(eth0) entered forwarding state
    Jul 29 04:30:22 aug mstpd[497]: set_if_up: Port eth1 : up
    Jul 29 04:30:22 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:30:22 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth0:0 entering learning state
    Jul 29 04:30:22 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth0:0 entering forwarding state
    Jul 29 04:30:22 aug mstpd[497]: MSTP_OUT_flush_all_fids: br-lan:eth0:0 Flushing forwarding database
    Jul 29 04:30:22 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:30:22 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:30:22 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:30:24 aug mstpd[497]: MSTP_OUT_flush_all_fids: br-lan:eth0:0 Flushing forwarding database
    Jul 29 04:30:24 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:31:19 aug systemd[1]: Started Session 12 of user aug.
    Jul 29 04:31:19 aug systemd[1]: session-12.scope: Succeeded.
    Jul 29 04:31:37 aug systemd[1]: Started Session 13 of user aug.
    Jul 29 04:31:38 aug systemd[1]: session-13.scope: Succeeded.

    Jul 29 04:31:58 aug kernel: [ 6044.056409] am65-cpsw-nuss 8000000.ethernet eth1: Link is Down
    Jul 29 04:31:58 aug kernel: [ 6044.059227] br-lan: port 2(eth1) entered disabled state
    Jul 29 04:31:58 aug mstpd[497]: set_if_up: Port eth1 : down
    Jul 29 04:31:58 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth1:0 entering blocking state
    Jul 29 04:31:58 aug netifd[395]: Network device 'eth1' link is down
    Jul 29 04:31:58 aug mstpd[497]: error, rtnl_talk: RTNETLINK answers
    Jul 29 04:31:58 aug mstpd[497]: error, MSTP_OUT_set_state: br-lan:eth1 Couldn't set kernel bridge state blocking
    Jul 29 04:31:58 aug mstpd[497]: MSTP_OUT_flush_all_fids: br-lan:eth1:0 Flushing forwarding database
    Jul 29 04:31:58 aug mstpd[497]: set_if_up: Port eth1 : down
    Jul 29 04:33:05 aug systemd[1]: Started Session 14 of user aug.
    Jul 29 04:33:06 aug systemd[1]: session-14.scope: Succeeded.
    Jul 29 04:33:28 aug systemd[1]: Started Session 15 of user aug.
    Jul 29 04:33:29 aug systemd[1]: session-15.scope: Succeeded.
    Jul 29 04:33:58 aug netifd[395]: Network device 'eth1' link is up
    Jul 29 04:33:58 aug mstpd[497]: set_if_up: Port eth1 : up
    Jul 29 04:33:58 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth0:0 entering blocking state
    Jul 29 04:33:58 aug kernel: [ 6163.992713] am65-cpsw-nuss 8000000.ethernet eth1: Link is Up - 100Mbps/Full - flow control off
    Jul 29 04:33:58 aug kernel: [ 6163.992772] br-lan: port 2(eth1) entered blocking state
    Jul 29 04:33:58 aug kernel: [ 6164.005432] br-lan: port 1(eth0) entered blocking state
    Jul 29 04:33:58 aug kernel: [ 6164.007930] br-lan: port 2(eth1) entered learning state
    Jul 29 04:33:58 aug kernel: [ 6164.009923] br-lan: port 2(eth1) entered forwarding state
    Jul 29 04:33:58 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth1:0 entering learning state
    Jul 29 04:33:58 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth1:0 entering forwarding state
    Jul 29 04:33:58 aug mstpd[497]: MSTP_OUT_flush_all_fids: br-lan:eth0:0 Flushing forwarding database
    Jul 29 04:33:58 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:33:58 aug mstpd[497]: set_if_up: Port eth1 : up
    Jul 29 04:33:58 aug kernel: [ 6164.018312] br-lan: port 1(eth0) entered learning state
    Jul 29 04:33:58 aug kernel: [ 6164.022918] br-lan: port 1(eth0) entered forwarding state
    Jul 29 04:33:58 aug mstpd[497]: set_if_up: Port eth1 : up
    Jul 29 04:33:58 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:33:58 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth0:0 entering learning state
    Jul 29 04:33:58 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth0:0 entering forwarding state
    Jul 29 04:33:58 aug mstpd[497]: MSTP_OUT_flush_all_fids: br-lan:eth0:0 Flushing forwarding database
    Jul 29 04:33:58 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:33:58 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:33:58 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:34:00 aug mstpd[497]: MSTP_OUT_flush_all_fids: br-lan:eth0:0 Flushing forwarding database
    Jul 29 04:34:00 aug mstpd[497]: set_if_up: Port eth0 : up
    Jul 29 04:34:43 aug systemd-timesyncd[249]: Timed out waiting for reply from 192.168.1.166:123 (192.168.1.166).
    Jul 29 04:34:54 aug systemd[1]: Started Session 16 of user aug.
    Jul 29 04:34:55 aug systemd[1]: session-16.scope: Succeeded.
    Jul 29 04:35:40 aug systemd[1]: Started Session 17 of user aug.
    Jul 29 04:35:41 aug systemd[1]: session-17.scope: Succeeded.
    Jul 29 04:36:01 aug kernel: [ 6287.259925] am65-cpsw-nuss 8000000.ethernet eth1: Link is Down
    Jul 29 04:36:01 aug kernel: [ 6287.266438] br-lan: port 2(eth1) entered disabled state
    Jul 29 04:36:01 aug mstpd[497]: set_if_up: Port eth1 : down
    Jul 29 04:36:01 aug mstpd[497]: MSTP_OUT_set_state: br-lan:eth1:0 entering blocking state
    Jul 29 04:36:01 aug netifd[395]: Network device 'eth1' link is down
    Jul 29 04:36:01 aug mstpd[497]: error, rtnl_talk: RTNETLINK answers
    Jul 29 04:36:01 aug mstpd[497]: error, MSTP_OUT_set_state: br-lan:eth1 Couldn't set kernel bridge state blocking
    Jul 29 04:36:01 aug mstpd[497]: MSTP_OUT_flush_all_fids: br-lan:eth1:0 Flushing forwarding database
    Jul 29 04:36:01 aug mstpd[497]: set_if_up: Port eth1 : down
    Jul 29 04:37:08 aug systemd[1]: Started Session 18 of user aug.
    Jul 29 04:37:09 aug systemd[1]: session-18.scope: Succeeded.
    Jul 29 04:37:32 aug systemd[1]: Started Session 19 of user aug.
    Jul 29 04:37:32 aug systemd[1]: session-19.scope: Succeeded.
    Jul 29 04:38:58 aug systemd[1]: Started Session 20 of user aug.
    Jul 29 04:38:58 aug systemd[1]: session-20.scope: Succeeded.
    Jul 29 04:39:16 aug systemd[1]: Started Session 21 of user aug.
    Jul 29 04:39:17 aug systemd[1]: session-21.scope: Succeeded.
    Jul 29 04:40:44 aug systemd[1]: Started Session 22 of user aug.
    Jul 29 04:40:45 aug systemd[1]: session-22.scope: Succeeded.
    Jul 29 04:41:07 aug systemd[1]: Started Session 23 of user aug.
    Jul 29 04:41:08 aug systemd[1]: session-23.scope: Succeeded.
    Jul 29 04:42:33 aug systemd[1]: Started Session 24 of user aug.
    Jul 29 04:42:34 aug systemd[1]: session-24.scope: Succeeded.
    Jul 29 04:42:51 aug systemd[1]: Started Session 25 of user aug.
    Jul 29 04:42:52 aug systemd[1]: session-25.scope: Succeeded.
    Jul 29 04:44:20 aug systemd[1]: Started Session 26 of user aug.
    Jul 29 04:44:20 aug systemd[1]: session-26.scope: Succeeded.
    Jul 29 04:44:43 aug systemd[1]: Started Session 27 of user aug.
    Jul 29 04:44:44 aug systemd[1]: session-27.scope: Succeeded.
    Jul 29 04:46:09 aug systemd[1]: Started Session 28 of user aug.
    Jul 29 04:46:10 aug systemd[1]: session-28.scope: Succeeded.
    Jul 29 04:47:58 aug kernel: [ 7004.385846] icssg-prueth icssg1-eth eth2: Link is Up - 100Mbps/Full - flow control off
    Jul 29 04:47:58 aug netifd[395]: Network device 'eth2' link is up
    Jul 29 04:47:58 aug netifd[395]: Interface 'lan2' has link connectivity
    Jul 29 04:48:00 aug dnsmasq-dhcp[575]: no address range available for DHCPv6 request via eth2
    Jul 29 04:48:02 aug dnsmasq-dhcp[575]: no address range available for DHCPv6 request via eth2
    Jul 29 04:48:06 aug dnsmasq-dhcp[575]: no address range available for DHCPv6 request via eth2
    Jul 29 04:48:14 aug dnsmasq-dhcp[575]: no address range available for DHCPv6 request via eth2
    Jul 29 04:48:30 aug dnsmasq-dhcp[575]: no address range available for DHCPv6 request via eth2
    Jul 29 04:48:35 aug systemd[1]: Started Session 29 of user aug.
    Jul 29 04:48:36 aug systemd[1]: Started Session 30 of user aug.
    Jul 29 04:49:02 aug dnsmasq-dhcp[575]: no address range available for DHCPv6 request via eth2
    Jul 29 05:09:02 aug systemd-timesyncd[249]: Timed out waiting for reply from 192.168.1.166:123 (192.168.1.166).
    Jul 29 05:17:01 aug CRON[1096]: (root) CMD ( cd / && run-parts --report /etc/cron.hourly)
    Jul 29 05:17:01 aug logrotate: ALERT exited abnormally with [1]
    Jul 29 05:17:01 aug CRON[1095]: (CRON) info (No MTA installed, discarding output)

  • Hi,

    I see a bridge is being setup. I would like to see if the issue is related somehow to bridge mode:

    - Could you please do the testing with output setting up a bridge?

    - Please confirm if that link is working as expected prior to the cable being disconnected.

    Best Regards,

    Schuyler

  • Hi,

    Link is working fine before cable being disconnected.

    And this issue has nothing to do with bridge.

    I do some test without bridge configuration with automated port plug and unplug controlled by relay.

    It is very easy to reproduce.

    I also do test with poll mode, no error report.

  • Hello,

    I try to set IRQ_TYPE_LEVEL_LOW, but not works

    [ 13.528900] am65-cpsw-nuss 8000000.ethernet eth0: PHY [8000f00.mdio:01] driver [TI DP83822] (irq=449)
    [ 13.529678] genirq: Setting trigger mode 8 for irq 449 failed (gpio_irq_type+0x0/0x10)

    And I test interrupt mode on PRU port, panic reports.

    PRU port DTS file:

    icssg0_phy1_irq_pins_default: icssg0-phy1-irq-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0170, PIN_INPUT, 7) /* (AA2) PRG0_PRU0_GPO4.GPIO1_4 */
    >;
    };

    icssg1_phy1_irq_pins_default: icssg1-phy1-irq-pins-default {
    pinctrl-single,pins = <
    AM64X_IOPAD(0x0190, PIN_INPUT, 7) /* (AA3) PRG0_PRU0_GPO12.GPIO1_12 */
    >;
    };

    &icssg0_mdio {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&icssg0_mdio0_pins_default>;

    icssg0_phy1: ethernet-phy@2 {
    /* RGMII2 -- 10 */
    reg = <0x2>;
    tx-internal-delay-ps = <250>;
    rx-internal-delay-ps = <2000>;
    pinctrl-names = "default";
    pinctrl-0 = <&icssg0_phy1_irq_pins_default>;
    interrupt-parent = <&main_gpio1>;
    interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
    };
    };

    &icssg1_mdio {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&icssg1_mdio1_pins_default>;

    icssg1_phy1: ethernet-phy@f {
    /* RGMII1 -- 11 */
    reg = <0x3>;
    tx-internal-delay-ps = <250>;
    rx-internal-delay-ps = <2000>;
    pinctrl-names = "default";
    pinctrl-0 = <&icssg1_phy1_irq_pins_default>;
    interrupt-parent = <&main_gpio1>;
    interrupts = <12 IRQ_TYPE_EDGE_FALLING>;
    };
    };

    panic logs:

    am65-cpsw-nuss 8000000.ethernet: initializing am65 cpsw nuss version 0x6BA00903, cpsw version 0x6BA80903 Ports: 3 quirks:00000006
    [ 0.736042] davinci_mdio 8000f00.mdio: Configuring MDIO in manual mode
    [ 0.770820] davinci_mdio 8000f00.mdio: davinci mdio revision 9.7, bus freq 1000000
    [ 0.777829] davinci_mdio 8000f00.mdio: phy[0]: device 8000f00.mdio:00, driver TI DP83822
    [ 0.777851] davinci_mdio 8000f00.mdio: phy[1]: device 8000f00.mdio:01, driver TI DP83822
    [ 0.778097] am65-cpsw-nuss 8000000.ethernet: initialized cpsw ale version 1.4
    [ 0.778108] am65-cpsw-nuss 8000000.ethernet: ALE Table size 512, Policers 32
    [ 0.780045] am65-cpsw-nuss 8000000.ethernet: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:1
    [ 0.929813] am65-cpsw-nuss 8000000.ethernet: set new flow-id-base 16
    [ 0.940874] am65-cpts 39000000.cpts: CPTS ver 0x4e8a010c, freq:500000000, add_val:1 pps:0
    [ 0.944168] icssg-prueth icssg1-eth: port 1: using random MAC addr: fa:3c:51:e4:8c:73
    [ 0.954388] icssg-prueth icssg1-eth (unnamed net_device) (uninitialized): timeout waiting for command done
    [ 0.956108] icssg-prueth icssg1-eth: couldn't connect to phy ethernet-phy@f
    [ 0.956128] icssg-prueth icssg1-eth: can't connect to MII0 PHY, error --19
    [ 0.978049] ------------[ cut here ]------------
    [ 0.978066] WARNING: CPU: 0 PID: 12 at net/devlink/core.c:382 devl_unregister+0x60/0x68
    [ 0.978098] Modules linked in:
    [ 0.978113] CPU: 0 UID: 0 PID: 12 Comm: kworker/u8:0 Not tainted 6.18.38-g8933766be737-dirty #1 PREEMPT_RT
    [ 0.978123] Hardware name: Texas Instruments AM642 EVM (DT)
    [ 0.978130] Workqueue: events_unbound deferred_probe_work_func
    [ 0.978150] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [ 0.978158] pc : devl_unregister+0x60/0x68
    [ 0.978167] lr : devl_unregister+0x2c/0x68
    [ 0.978176] sp : ffff80008179ba40
    [ 0.978179] x29: ffff80008179ba40 x28: 0000000000000000 x27: ffff0000044b8918
    [ 0.978191] x26: 0000000000001198 x25: ffff0000044b8918 x24: 0000000000001158
    [ 0.978202] x23: ffff00003fe34c90 x22: 00000000000036e8 x21: 0000000000000000
    [ 0.978213] x20: ffff800081608d28 x19: ffff0000044b9800 x18: ffff00003fdb9c80
    [ 0.978225] x17: 000000000001c526 x16: 00000000000002bc x15: 01dd4138cb847cec
    [ 0.978236] x14: 00000000000002e5 x13: 0000000000000000 x12: 0000000000000040
    [ 0.978246] x11: 00000000000000c0 x10: 0000000000000a70 x9 : 0000000000000001
    [ 0.978257] x8 : 0000000000000000 x7 : 0000000000000238 x6 : 0000000000000000
    [ 0.978267] x5 : ffff0000044b9800 x4 : ffff00000108bb60 x3 : ffff0000044b9800
    [ 0.978278] x2 : 0000000000000001 x1 : 0000000000000000 x0 : 0000000000000000
    [ 0.978289] Call trace:
    [ 0.978293] devl_unregister+0x60/0x68 (P)
    [ 0.978306] devlink_unregister+0x24/0x3c
    [ 0.978317] prueth_unregister_devlink+0x5c/0xcc
    [ 0.978331] prueth_probe+0x828/0xae4
    [ 0.978340] platform_probe+0x5c/0xa4
    [ 0.978350] really_probe+0xbc/0x2ac
    [ 0.978359] __driver_probe_device+0x80/0x154
    [ 0.978367] driver_probe_device+0xb8/0x184
    [ 0.978375] __device_attach_driver+0xb8/0x154
    [ 0.978383] bus_for_each_drv+0x88/0xe8
    [ 0.978394] __device_attach+0x9c/0x1a0
    [ 0.978402] device_initial_probe+0x14/0x20
    [ 0.978411] bus_probe_device+0xa4/0xb4
    [ 0.978422] deferred_probe_work_func+0x88/0xc0
    [ 0.978434] process_one_work+0x150/0x290
    [ 0.978449] worker_thread+0x18c/0x300
    [ 0.978460] kthread+0x12c/0x214
    [ 0.978472] ret_from_fork+0x10/0x20
    [ 0.978487] ---[ end trace 0000000000000000 ]---
    [ 0.978565] ------------[ cut here ]------------
    [ 0.978568] WARNING: CPU: 0 PID: 12 at net/devlink/dev.c:205 devlink_notify+0x160/0x174
    [ 0.978581] Modules linked in:
    [ 0.978588] CPU: 0 UID: 0 PID: 12 Comm: kworker/u8:0 Tainted: G W 6.18.38-g8933766be737-dirty #1 PREEMPT_RT
    [ 0.978599] Tainted: [W]=WARN
    [ 0.978602] Hardware name: Texas Instruments AM642 EVM (DT)
    [ 0.978607] Workqueue: events_unbound deferred_probe_work_func
    [ 0.978619] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [ 0.978626] pc : devlink_notify+0x160/0x174
    [ 0.978636] lr : devlink_notify+0x48/0x174
    [ 0.978645] sp : ffff80008179b9c0
    [ 0.978648] x29: ffff80008179b9f0 x28: 0000000000000000 x27: ffff0000044b8918
    [ 0.978659] x26: 0000000000001198 x25: ffff0000044b8918 x24: 0000000000001158
    [ 0.978670] x23: ffff00003fe34c90 x22: 0000000000000004 x21: ffff0000044b9800
    [ 0.978682] x20: ffff800081608d28 x19: ffff0000044b9800 x18: ffff00003fdb9c80
    [ 0.978693] x17: 000000000001c526 x16: 00000000000002bc x15: 01dd4138cb847cec
    [ 0.978704] x14: 00000000000002e5 x13: 0000000000000000 x12: 0000000000000040
    [ 0.978714] x11: 00000000000000c0 x10: 0000000000000a70 x9 : ffffffffffffffff
    [ 0.978725] x8 : 0000000000000000 x7 : ffff80008179b960 x6 : 0000000000000000
    [ 0.978735] x5 : ffff0000044b9800 x4 : ffff00000108bb60 x3 : ffff0000044b9800
    [ 0.978746] x2 : 0000000000000001 x1 : 0000000000000000 x0 : 0000000000000000
    [ 0.978756] Call trace:
    [ 0.978759] devlink_notify+0x160/0x174 (P)
    [ 0.978771] devlink_notify_unregister+0x5c/0x6c
    [ 0.978782] devl_unregister+0x38/0x68
    [ 0.978792] devlink_unregister+0x24/0x3c
    [ 0.978802] prueth_unregister_devlink+0x5c/0xcc
    [ 0.978812] prueth_probe+0x828/0xae4
    [ 0.978822] platform_probe+0x5c/0xa4
    [ 0.978831] really_probe+0xbc/0x2ac
    [ 0.978839] __driver_probe_device+0x80/0x154
    [ 0.978847] driver_probe_device+0xb8/0x184
    [ 0.978855] __device_attach_driver+0xb8/0x154
    [ 0.978864] bus_for_each_drv+0x88/0xe8
    [ 0.978874] __device_attach+0x9c/0x1a0
    [ 0.978883] device_initial_probe+0x14/0x20
    [ 0.978891] bus_probe_device+0xa4/0xb4
    [ 0.978902] deferred_probe_work_func+0x88/0xc0
    [ 0.978914] process_one_work+0x150/0x290
    [ 0.978924] worker_thread+0x18c/0x300
    [ 0.978934] kthread+0x12c/0x214
    [ 0.978943] ret_from_fork+0x10/0x20
    [ 0.978955] ---[ end trace 0000000000000000 ]---
    [ 0.992745] icssg-prueth icssg0-eth: port 2: using random MAC addr: 42:37:93:0b:9e:9d
    [ 1.003076] icssg-prueth icssg0-eth (unnamed net_device) (uninitialized): timeout waiting for command done
    [ 1.004673] icssg-prueth icssg0-eth: couldn't connect to phy ethernet-phy@2
    [ 1.004693] icssg-prueth icssg0-eth: can't connect to MII1 PHY, error -19
    [ 1.024064] ------------[ cut here ]------------
    [ 1.024081] WARNING: CPU: 0 PID: 12 at net/devlink/dev.c:205 devlink_notify+0x160/0x174
    [ 1.024112] Modules linked in:
    [ 1.024129] CPU: 0 UID: 0 PID: 12 Comm: kworker/u8:0 Tainted: G W 6.18.38-g8933766be737-dirty #1 PREEMPT_RT
    [ 1.024142] Tainted: [W]=WARN
    [ 1.024146] Hardware name: Texas Instruments AM642 EVM (DT)
    [ 1.024152] Workqueue: events_unbound deferred_probe_work_func
    [ 1.024171] pstate: 40000005 (nZcv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
    [ 1.024180] pc : devlink_notify+0x160/0x174
    [ 1.024190] lr : devlink_notify+0x48/0x174
    [ 1.024199] sp : ffff80008179b9c0
    [ 1.024203] x29: ffff80008179b9f0 x28: ffff000004510ac0 x27: ffff0000044b8918
    [ 1.024215] x26: 0000000000001198 x25: ffff0000044b8918 x24: 0000000000001158
    [ 1.024226] x23: 0000000000000000 x22: 0000000000000004 x21: ffff0000044b9800
    [ 1.024237] x20: ffff800081608d28 x19: ffff0000044b9800 x18: ffff00003fdb9c80
    [ 1.024248] x17: 000000000001c7b5 x16: 00000000000002c5 x15: 01f4ce4fb53c86c4
    [ 1.024259] x14: 00000000000003cc x13: 0000000000000000 x12: 0000000000000040
    [ 1.024270] x11: 00000000000000c0 x10: 0000000000000a70 x9 : ffffffffffffffff
    [ 1.024280] x8 : 0000000000000000 x7 : ffff80008179b960 x6 : 0000000000000000
    [ 1.024291] x5 : ffff0000044b9800 x4 : ffff000001e84248 x3 : ffff0000044b9800
    [ 1.024302] x2 : 0000000000000002 x1 : 0000000000000000 x0 : 0000000000000000
    [ 1.024313] Call trace:
    [ 1.024318] devlink_notify+0x160/0x174 (P)
    [ 1.024331] devlink_notify_unregister+0x5c/0x6c
    [ 1.024343] devl_unregister+0x38/0x68
    [ 1.024354] devlink_unregister+0x24/0x3c
    [ 1.024364] prueth_unregister_devlink+0xa4/0xcc
    [ 1.024377] prueth_probe+0x828/0xae4
    [ 1.024386] platform_probe+0x5c/0xa4
    [ 1.024397] really_probe+0xbc/0x2ac
    [ 1.024405] __driver_probe_device+0x80/0x154
    [ 1.024414] driver_probe_device+0xb8/0x184
    [ 1.024422] __device_attach_driver+0xb8/0x154
    [ 1.024431] bus_for_each_drv+0x88/0xe8
    [ 1.024442] __device_attach+0x9c/0x1a0
    [ 1.024450] device_initial_probe+0x14/0x20
    [ 1.024458] bus_probe_device+0xa4/0xb4
    [ 1.024469] deferred_probe_work_func+0x88/0xc0
    [ 1.024481] process_one_work+0x150/0x290
    [ 1.024496] worker_thread+0x18c/0x300
    [ 1.024506] kthread+0x12c/0x214
    [ 1.024517] ret_from_fork+0x10/0x20
    [ 1.024534] ---[ end trace 0000000000000000 ]---
    [ 1.036637] mmc1: CQHCI version 5.10
    [ 1.039187] mmc0: CQHCI version 5.10
    [ 1.071359] davinci_mdio 30032400.mdio: Configuring MDIO in manual mode
    [ 1.079085] mmc1: SDHCI controller on fa00000.mmc [fa00000.mmc] using ADMA 64-bit
    [ 1.104816] davinci_mdio 30032400.mdio: davinci mdio revision 1.7, bus freq 1000000
    [ 1.108333] davinci_mdio 30032400.mdio: phy[2]: device 30032400.mdio:02, driver TI DP83822
    [ 1.109135] davinci_mdio 300b2400.mdio: Configuring MDIO in manual mode
    [ 1.109991] mmc0: SDHCI controller on fa10000.mmc [fa10000.mmc] using ADMA 64-bit