On Tue, Jul 5, 2022 at 2:11 AM Geert Uytterhoeven <geert@xxxxxxxxxxxxxx> wrote: > > Hi Saravana, > > On Wed, Jun 1, 2022 at 2:44 PM Saravana Kannan <saravanak@xxxxxxxxxx> wrote: > > Now that fw_devlink=on by default and fw_devlink supports interrupt > > properties, the execution will never get to the point where > > driver_deferred_probe_check_state() is called before the supplier has > > probed successfully or before deferred probe timeout has expired. > > > > So, delete the call and replace it with -ENODEV. > > > > Signed-off-by: Saravana Kannan <saravanak@xxxxxxxxxx> > > Thanks for your patch, which is now commit f8217275b57aa48d ("net: > mdio: Delete usage of driver_deferred_probe_check_state()") in > driver-core/driver-core-next. > > Seems like I missed something when providing my T-b for this series, > sorry for that. No worries. Appreciate any testing help. > > arch/arm/boot/dts/r8a7791-koelsch.dts has: > > ðer { > pinctrl-0 = <ðer_pins>, <&phy1_pins>; > pinctrl-names = "default"; > > phy-handle = <&phy1>; > renesas,ether-link-active-low; > status = "okay"; > > phy1: ethernet-phy@1 { > compatible = "ethernet-phy-id0022.1537", > "ethernet-phy-ieee802.3-c22"; > reg = <1>; > interrupt-parent = <&irqc0>; > interrupts = <0 IRQ_TYPE_LEVEL_LOW>; > micrel,led-mode = <1>; > reset-gpios = <&gpio5 22 GPIO_ACTIVE_LOW>; > }; > }; > > Despite the interrupts property, ðer is now probed before irqc0 > (interrupt-controller@e61c0000 in arch/arm/boot/dts/r8a7791.dtsi), > causing the PHY not finding its interrupt, and resorting to polling: I'd still expect the device link to have been created properly for this phy device. Could you enable the logging in device_link_add() to check the link is created between the phy and the IRQ? My guess is that this probably has something to do with phys being attached to drivers differently. > > -Micrel KSZ8041RNLI ee700000.ethernet-ffffffff:01: attached PHY > driver (mii_bus:phy_addr=ee700000.ethernet-ffffffff:01, irq=185) > +Micrel KSZ8041RNLI ee700000.ethernet-ffffffff:01: attached PHY > driver (mii_bus:phy_addr=ee700000.ethernet-ffffffff:01, irq=POLL) Can you drop a WARN() where this is printed to get the stack trace to check my hypothesis? -Saravana > > Reverting this commit, and commit 9cbffc7a59561be9 ("driver core: > Delete driver_deferred_probe_check_state()") fixes that. > > > --- a/drivers/net/mdio/fwnode_mdio.c > > +++ b/drivers/net/mdio/fwnode_mdio.c > > @@ -47,9 +47,7 @@ int fwnode_mdiobus_phy_device_register(struct mii_bus *mdio, > > * just fall back to poll mode > > */ > > if (rc == -EPROBE_DEFER) > > - rc = driver_deferred_probe_check_state(&phy->mdio.dev); > > - if (rc == -EPROBE_DEFER) > > - return rc; > > + rc = -ENODEV; > > > > if (rc > 0) { > > phy->irq = rc; > > 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