Hi all, During the last few months, booting kernels on BeagleBone Black sometimes fails with: +SMSC LAN8710/LAN8720 4a101000.mdio:00: probe with driver SMSC LAN8710/LAN8720 failed with error -5 davinci_mdio 4a101000.mdio: phy[0]: device 4a101000.mdio:00, driver SMSC LAN8710/LAN8720 soc_device_match(cpsw_soc_devices): no match cpsw-switch 4a100000.switch: initialized cpsw ale version 1.4 ... am335x-phy-driver 47401300.usb-phy: dummy supplies not allowed for exclusive requests (id=vbus) +cpsw-125mhz-clkctrl:0014:0: failed to disable am335x-phy-driver 47401b00.usb-phy: using DT '/ocp/target-module@47400000/usb-phy@1b00' for 'reset' GPIO lookup ... cpsw-switch 4a100000.switch: starting ndev. mode: dual_mac -SMSC LAN8710/LAN8720 4a101000.mdio:00: attached PHY driver (mii_bus:phy_addr=4a101000.mdio:00, irq=POLL) -cpsw-switch 4a100000.switch eth0: Link is Up - 100Mbps/Full - flow control off -Sending DHCP requests ., OK -IP-Config: Complete: -[...] +cpsw-switch 4a100000.switch: phy "/ocp/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000/ethernet-phy@0" not found on slave 0 +[HANG] Adding debug prints to smsc_phy_probe() makes the issue go away, so it must be timing related. Adding specific debug prints in the failure case gives: SMSC LAN8710/LAN8720 4a101000.mdio:00: genphy_read_abilities:2859: phy_read(MII_BMSR) failed -EIO SMSC LAN8710/LAN8720 4a101000.mdio:00: phy_probe:3613: genphy_read_abilities() failed -EIO SMSC LAN8710/LAN8720 4a101000.mdio:00: probe with driver SMSC LAN8710/LAN8720 failed with error -5 and later: Generic PHY 4a101000.mdio:00: genphy_read_abilities:2859: phy_read(MII_BMSR) failed -EIO Generic PHY 4a101000.mdio:00: phy_probe:3609: genphy_read_abilities failed -EIO cpsw-switch 4a100000.switch: phy "/ocp/interconnect@4a000000/segment@0/target-module@100000/switch@0/mdio@1000/ethernet-phy@0" not found on slave 0 Adding debug prints to __mdiobus_read() and davinci_mdio_read() gives: mdio_bus 4a101000.mdio: davinci_mdio_read:444: readl(&data->regs->user[0].access) = 0x3a0ffff mdio_bus 4a101000.mdio: __mdiobus_read:900: davinci_mdio_read failed -EIO but this is a different (and unimportant?) early failure from smsc_phy_config_intr(), and that debug print actually makes the issue go away, too. Ignoring the early failure reveals that phy_read(MII_BMSR) failed due to: mdio_bus 4a101000.mdio: davinci_mdio_read:446: readl(&data->regs->user[0].access) = 0x20ffff Anyone with a clue? Thanks! Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx In personal conversations with technical people, I call myself a hacker. But when I'm talking to journalists I just say "programmer" or something like that. -- Linus Torvalds