Re: [PATCH net-next] net: phy: call phy_init_hw() in phy resume path

From: Russell King (Oracle)

Date: Fri Apr 10 2026 - 11:40:33 EST


On Fri, Apr 10, 2026 at 05:15:21PM +0200, Andrew Lunn wrote:
> > Apart from that, looks fine to me - it seems some paths call
> > phy_init_hw() can be called with or without phydev->lock held, and
> > this one will call it with the lock held which seems to be okay.
>
> Haven't we had deadlocks in this area before?

If we have a problem calling phy_init_hw() with phydev->lock held, then:

phy_state_machine():
mutex_lock(&phydev->lock);
state_work = _phy_state_machine(phydev);

_phy_state_machine():
switch (phydev->state) {
...
case PHY_CABLETEST:
err = phydev->drv->cable_test_get_status(phydev, &finished);
if (err) {
phy_abort_cable_test(phydev);

phy_abort_cable_test():
err = phy_init_hw(phydev);

that path has a problem and needs fixing.


--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!