Patch "net: phy: Don't WARN for PHY_UP state in mdio_bus_phy_resume()" has been added to the 5.15-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net: phy: Don't WARN for PHY_UP state in mdio_bus_phy_resume()

to the 5.15-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-phy-don-t-warn-for-phy_up-state-in-mdio_bus_phy_.patch
and it can be found in the queue-5.15 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit ed48621ed1b9781ed5f8d0c3e0bfc95fa8a1f80f
Author: Lukas Wunner <lukas@xxxxxxxxx>
Date:   Fri Sep 23 06:09:52 2022 +0200

    net: phy: Don't WARN for PHY_UP state in mdio_bus_phy_resume()
    
    [ Upstream commit ea64cdfad124922c931633e39287c5a31a9b14a1 ]
    
    Commit 744d23c71af3 ("net: phy: Warn about incorrect mdio_bus_phy_resume()
    state") introduced a WARN() on resume from system sleep if a PHY is not
    in PHY_HALTED state.
    
    Commit 6dbe852c379f ("net: phy: Don't WARN for PHY_READY state in
    mdio_bus_phy_resume()") added an exemption for PHY_READY state from
    the WARN().
    
    It turns out PHY_UP state needs to be exempted as well because the
    following may happen on suspend:
    
      mdio_bus_phy_suspend()
        phy_stop_machine()
          phydev->state = PHY_UP  #  if (phydev->state >= PHY_UP)
    
    Fixes: 744d23c71af3 ("net: phy: Warn about incorrect mdio_bus_phy_resume() state")
    Reported-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
    Tested-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
    Link: https://lore.kernel.org/netdev/2b1a1588-505e-dff3-301d-bfc1fb14d685@xxxxxxxxxxx/
    Signed-off-by: Lukas Wunner <lukas@xxxxxxxxx>
    Acked-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
    Cc: Xiaolei Wang <xiaolei.wang@xxxxxxxxxxxxx>
    Link: https://lore.kernel.org/r/8128fdb51eeebc9efbf3776a4097363a1317aaf1.1663905575.git.lukas@xxxxxxxxx
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index b616f55ea222..c5b92ffaffb9 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -315,11 +315,13 @@ static __maybe_unused int mdio_bus_phy_resume(struct device *dev)
 
 	phydev->suspended_by_mdio_bus = 0;
 
-	/* If we manged to get here with the PHY state machine in a state neither
-	 * PHY_HALTED nor PHY_READY this is an indication that something went wrong
-	 * and we should most likely be using MAC managed PM and we are not.
+	/* If we managed to get here with the PHY state machine in a state
+	 * neither PHY_HALTED, PHY_READY nor PHY_UP, this is an indication
+	 * that something went wrong and we should most likely be using
+	 * MAC managed PM, but we are not.
 	 */
-	WARN_ON(phydev->state != PHY_HALTED && phydev->state != PHY_READY);
+	WARN_ON(phydev->state != PHY_HALTED && phydev->state != PHY_READY &&
+		phydev->state != PHY_UP);
 
 	ret = phy_init_hw(phydev);
 	if (ret < 0)



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux