On Tue, Aug 8, 2023 at 4:25 PM Andrew Lunn <andrew@xxxxxxx> wrote: > > > > On Tue, Aug 08, 2023 at 10:13:09AM +0200, Bartosz Golaszewski wrote: > > > > 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. > > > > > > > > When I fixed that, MAC1's probe is correctly deferred until MAC0 has > > > > created the MDIO bus. > > > > > > > > Even so, isn't it useful to actually reference the shared MDIO bus in some way? > > > > > > > > If the schematics look something like this: > > > > > > > > -------- ------- > > > > | MAC0 |--MDIO-----| PHY | > > > > -------- | | ------- > > > > | | > > > > -------- | | ------- > > > > | MAC1 |-- ----| PHY | > > > > -------- ------- > > > > > > > > Then it would make sense to model it on the device tree? > > > > > > So I think what you're saying is that MAC0 and MAC1's have MDIO bus > > > masters, and the hardware designer decided to tie both together to > > > a single set of clock and data lines, which then go to two PHYs. > > > > The schematics I have are not very clear on that, but now that you > > mention this, it's most likely the case. > > I hope not. That would be very broken. As Russell pointed out, MDIO is > not multi-master. You need to check with the hardware designer if the > schematics are not clear. Sorry, it was not very clear. It's the case that two MDIO masters share the MDC and data lines. > > > Good point, but it's worse than that: when MAC0 is unbound, it will > > unregister the MDIO bus and destroy all PHY devices. These are not > > refcounted so they will literally go from under MAC1. Not sure how > > this can be dealt with? > > unbinding is not a normal operation. So i would just live with it, and > if root decides to shoot herself in the foot, that is her choice. > I disagree. Unbinding is very much a normal operation. Less so for platform devices but still, it is there for a reason and should be expected to work correctly. Or at the very least not crash and burn the system. On the other hand, I like your approach because I may get away without having to fix it. But if I were to fix it - I would reference the MDIO bus from the secondary mac by phandle and count its references before dropping it. :) Bartosz