Messages in this thread | | | Date | Fri, 1 Jul 2022 11:13:40 +0200 | From | Andrew Lunn <> | Subject | Re: [PATCH net-next v2] net: macb: In shared MDIO usecase make MDIO producer ethernet node to probe first |
| |
On Fri, Jul 01, 2022 at 01:25:06AM +0530, Radhey Shyam Pandey wrote: > In shared MDIO suspend/resume usecase for ex. with MDIO producer > (0xff0c0000) eth1 and MDIO consumer(0xff0b0000) eth0 there is a > constraint that ethernet interface(ff0c0000) MDIO bus producer > has to be resumed before the consumer ethernet interface(ff0b0000). > > However above constraint is not met when GEM0(ff0b0000) is resumed first. > There is phy_error on GEM0 and interface becomes non-functional on resume. > > suspend: > [ 46.477795] macb ff0c0000.ethernet eth1: Link is Down > [ 46.483058] macb ff0c0000.ethernet: gem-ptp-timer ptp clock unregistered. > [ 46.490097] macb ff0b0000.ethernet eth0: Link is Down > [ 46.495298] macb ff0b0000.ethernet: gem-ptp-timer ptp clock unregistered. > > resume: > [ 46.633840] macb ff0b0000.ethernet eth0: configuring for phy/sgmii link mode > macb_mdio_read -> pm_runtime_get_sync(GEM1) it return -EACCES error. > > The suspend/resume is dependent on probe order so to fix this dependency > ensure that MDIO producer ethernet node is always probed first followed > by MDIO consumer ethernet node. > > During MDIO registration find out if MDIO bus is shared and check if MDIO > producer platform node(traverse by 'phy-handle' property) is bound. If not > bound then defer the MDIO consumer ethernet node probe. Doing it ensures > that in suspend/resume MDIO producer is resumed followed by MDIO consumer > ethernet node.
I don't think there is anything specific to MACB here. There are Freescale boards which have an MDIO bus shared by two interfaces etc.
Please try to solve this in a generic way, not specific to one MAC and MDIO combination.
Andrew
| |