> Ok so upon some further investigation, the actual culprit is in stmmac > platform code - it always tries to register an MDIO bus - independent > of whether there is an actual mdio child node - unless the MAC is > marked explicitly as having a fixed-link. If the MDIO bus does exist registering it should not be a problem. Ideally it should have an internal pull up on its MDIO line, so that all reads return 0xffff. The phylib core will then determine there are no devices on it. Not actually registering it because there is no MDIO node in DT is just an optimisation. > When I fixed that, MAC1's probe is correctly deferred until MAC0 has > created the MDIO bus. Great. That is how it should work. > Even so, isn't it useful to actually reference the shared MDIO bus in some way? Why? Linux does not care where the PHY is. There are some SoCs with an independent MDIO bus masters. They have there own node in DT, there own driver etc. You can create an MDIO bus from two or three GPIOs and bit banging, again as an node in DT. There are Ethernet switches which can have 11 ports, and 2 MDIO busses, one purely internal and one external, and the PHYs are scattered over these busses. All linux needs is a phandle to the PHY, nothing more. Andrew