3da8ec8523
Ubuntu's latest tag updated from v5.15.60 to v5.15.64 and one advantage of them trailing upstream stable 5.15.y is that we can backport fixes of fixes that got in with that commit range. Found with the report of: git log --decorate v5.15..v5.15.73 | \ ~/gitdm/stablefixes --fixed-after v5.15.64 --regressed-before v5.15.64 Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
61 lines
2.5 KiB
Diff
61 lines
2.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Lukas Wunner <lukas@wunner.de>
|
|
Date: Fri, 23 Sep 2022 06:09:52 +0200
|
|
Subject: [PATCH] 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@samsung.com>
|
|
Tested-by: Marek Szyprowski <m.szyprowski@samsung.com>
|
|
Link: https://lore.kernel.org/netdev/2b1a1588-505e-dff3-301d-bfc1fb14d685@samsung.com/
|
|
Signed-off-by: Lukas Wunner <lukas@wunner.de>
|
|
Acked-by: Florian Fainelli <f.fainelli@gmail.com>
|
|
Cc: Xiaolei Wang <xiaolei.wang@windriver.com>
|
|
Link: https://lore.kernel.org/r/8128fdb51eeebc9efbf3776a4097363a1317aaf1.1663905575.git.lukas@wunner.de
|
|
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
|
|
Signed-off-by: Sasha Levin <sashal@kernel.org>
|
|
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
|
|
---
|
|
drivers/net/phy/phy_device.c | 10 ++++++----
|
|
1 file changed, 6 insertions(+), 4 deletions(-)
|
|
|
|
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)
|