On Wed, May 23, 2018 at 10:15:29PM +0200, Heiner Kallweit wrote: > I have the issue that suspending the MAC-integrated PHY gives an > error during system suspend. The sequence is: > > 1. unconnected PHY/MAC are runtime-suspended already > 2. system suspend commences > 3. mdio_bus_phy_suspend is called > 4. suspend callback of the network driver is called (implicitly > MAC/PHY are runtime-resumed before) > 5. suspend callback suspends MAC/PHY > > The problem occurs in step 3. phy_suspend() fails because the MDIO > bus isn't accessible due to the chip being runtime-suspended.
I think you are fixing the wrong problem. I've had the same with the FEC driver. I fixed it by making the MDIO operations runtime-suspend aware: commit 8fff755e9f8d0f70a595e79f248695ce6aef5cc3 Author: Andrew Lunn <and...@lunn.ch> Date: Sat Jul 25 22:38:02 2015 +0200 net: fec: Ensure clocks are enabled while using mdio bus When a switch is attached to the mdio bus, the mdio bus can be used while the interface is not open. If the IPG clock is not enabled, MDIO reads/writes will simply time out. Add support for runtime PM to control this clock. Enable/disable this clock using runtime PM, with open()/close() and mdio read()/write() function triggering runtime PM operations. Since PM is optional, the IPG clock is enabled at probe and is no longer modified by fec_enet_clk_enable(), thus if PM is not enabled in the kernel, it is guaranteed the clock is running when MDIO operations are performed. Don't copy this patch 1:1. I introduced a few bugs which took a while to be shaken out :-( Andrew