On Wed, Oct 04, 2017 at 10:44:36PM +0000, woojung....@microchip.com wrote: > > +static int dp83822_suspend(struct phy_device *phydev) > > +{ > > + int value; > > + > > + mutex_lock(&phydev->lock); > > + value = phy_read_mmd(phydev, DP83822_DEVADDR, > > MII_DP83822_WOL_CFG); > > + mutex_unlock(&phydev->lock);
> Would we need mutex to access phy_read_mmd()? > phy_read_mmd() has mdio_lock for indirect access. Hi Woojung The mdio lock is not sufficient. It protects against two mdio accesses. But here we need to protect against two phy operations. There is a danger something else tries to access the phy during suspend. > > + if (!(value & DP83822_WOL_EN)) > > + genphy_suspend(phydev); Releasing the lock before calling genphy_suspend() is not so nice. Maybe add a version which assumes the lock has already been taken? Andrew