On Tue, Aug 31, 2021 at 4:18 PM Vladimir Oltean <olteanv@xxxxxxxxx> wrote: > > On Wed, Sep 01, 2021 at 01:02:09AM +0200, Andrew Lunn wrote: > > Rev B is interesting because switch0 and switch1 got genphy, while > > switch2 got the correct Marvell PHY driver. switch2 PHYs don't have > > interrupt properties, so don't loop back to their parent device. > > This is interesting and not what I really expected to happen. It goes to > show that we really need more time to understand all the subtleties of > device dependencies before jumping on patching stuff. > > In case the DSA tree contains more than one switch, different things > will happen in dsa_register_switch(). > The tree itself is only initialized when the last switch calls > dsa_register_switch(). All the other switches just mark themselves as > present and exit probing early. See this piece of code in dsa_tree_setup: > > complete = dsa_tree_setup_routing_table(dst); > if (!complete) > return 0; Hi Vladimir, Can you point me to an example dts file that has a DSA tree with more than one switch and also point me to the switches that form the tree? I'm working on a RFC series that tries to improve some stuff and having an example DTS to look at would help. Thanks, Saravana > > So it should be a general property of cross-chip DSA trees that all > switches except the last one will have the specific PHY driver probed > properly, and not the genphy. > > Because all (N - 1) switches of a tree exit early in dsa_register_switch, > they have successfully probed by the time the last switch brings up the > tree, and brings up the PHYs on behalf of every other switch. > > The last switch can connect to the PHY on behalf of the other switches > past their probe ending, and those PHYs should not defer probing because > their supplier is now probed. It is only that the last switch cannot > connect to the PHYs of its own ports. > > So if this does not work (you say that there are 2 switches that use > genphy) I suspect there are also other bugs involved.