> -----Original Message----- > From: Russell King <linux@xxxxxxxxxxxxxxx> > Sent: 06 July 2025 11:11 > To: Biju Das <biju.das.jz@xxxxxxxxxxxxxx> > Cc: Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@xxxxxxxxxxxxxx>; Andrew Lunn > <andrew+netdev@xxxxxxx>; David S. Miller <davem@xxxxxxxxxxxxx>; Eric Dumazet <edumazet@xxxxxxxxxx>; > Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo Abeni <pabeni@xxxxxxxxxx>; Maxime Coquelin > <mcoquelin.stm32@xxxxxxxxx>; Alexandre Torgue <alexandre.torgue@xxxxxxxxxxx>; netdev@xxxxxxxxxxxxxxx; > linux-renesas-soc@xxxxxxxxxxxxxxx; linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx; linux-arm- > kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Geert Uytterhoeven > <geert+renesas@xxxxxxxxx>; biju.das.au <biju.das.au@xxxxxxxxx> > Subject: Re: [PATCH net-next] net: stmmac: dwmac-renesas-gbeth: Add PM suspend/resume callbacks > > On Sun, Jul 06, 2025 at 09:55:28AM +0000, Biju Das wrote: > > Just adding some logs: > > Currently PHY resume is called twice > > [ 35.754933] kszphy_resume+0x3c/0xf0 > > [ 35.754940] phy_resume+0x3c/0x74 > > [ 35.754949] phylink_prepare_resume+0x58/0xa0 > > [ 35.754957] stmmac_resume+0x90/0x2a0 > > [ 35.771296] stmmac_pltfr_resume+0x3c/0x4c > > > > and > > > > [ 35.771258] kszphy_resume+0x3c/0xf0 > > [ 35.771263] __phy_resume+0x28/0x54 > > [ 35.771270] phy_start+0x7c/0xb4 > > [ 35.771275] phylink_start+0xb8/0x210 > > [ 35.771282] phylink_resume+0x7c/0xc4 > > [ 35.771288] stmmac_resume+0x1ec/0x2a0 > > [ 35.771296] stmmac_pltfr_resume+0x3c/0x4c > > This shouldn't be a problem. Phylib will do this, and PHY drivers are expected to cope. > > For example, on non-MAC managed PM PHYs, mdio_bus_phy_resume() will call phy_init_hw() followed by > phy_resume(). If a MAC subsequently is brought up, phy_start() will be called, which will also call > __phy_resume(). > > If this is upsetting the KSZ PHY, then the KSZ PHY driver needs fixing. By reconfiguring rgmii_delay during resume also fixes the issue. Not sure, PHY device is expected to configure the delay during every resume? if (phy_interface_is_rgmii(phydev)) { ret = ksz9131_config_rgmii_delay(phydev); if (ret < 0) return ret; } Cheers, Biju