On 9/30/21 12:48 PM, Saravana Kannan wrote: > On Thu, Sep 30, 2021 at 12:38 PM Andrew Lunn <andrew@xxxxxxx> wrote: >> >>> Btw, do we have non-DSA networking devices where fw_devlink=on >>> delaying PHY probes is causing an issue? >> >> I don't know if issues have been reported, but the realtek driver has >> had problems in the past when the generic driver is used. Take a look >> at r8169_mdio_register(), it does something similar to DSA. > > Does it have the issue of having the PHY as its child too and then > depending on it to bind to a driver? I can't tell because I didn't > know how to find that info for a PCI device. Yes, r8169 includes a MDIO bus controller, and the PHY is internal to the Ethernet MAC. These are AFAIR the relevant changes to this discussion: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=16983507742cbcaa5592af530872a82e82fb9c51 https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=11287b693d03830010356339e4ceddf47dee34fa > >> >> What is going to make things interesting is that phy_attach_direct() >> is called in two different contexts. During the MAC drivers probe, it >> is O.K. to return EPROBE_DEFER, and let the MAC driver try again >> later, if we know there is a specific PHY driver for it. But when >> called during the MAC drivers open() op, -EPROBE_DEFER is not >> allowed. What to do then is an interesting question. > > Yeah, basically before doing an open() it'll have to call an API to > say "just bind with whatever you got". Or something along those lines. > I already know how to get that to work. I'll send some RFC soonish (I > hope). I don't think this is going to scale, we have dozens and dozens of drivers that connect to the PHY during ndo_open(). It is not realistic to audit them all, just like the opposite case where the drivers do probe MDIO/PHY during their .probe() call is not realistic either. -- Florian