RE: [PATCH net] net: stmmac: fix double serdes powerdown

From: Chang, Junxiao
Date: Thu Jun 22 2023 - 20:05:47 EST


Acked-by: Junxiao Chang <junxiao.chang@xxxxxxxxx>

-----Original Message-----
From: Andrew Halaney <ahalaney@xxxxxxxxxx>
Sent: Friday, June 23, 2023 2:54 AM
To: Bartosz Golaszewski <brgl@xxxxxxxx>
Cc: Giuseppe Cavallaro <peppe.cavallaro@xxxxxx>; Alexandre Torgue <alexandre.torgue@xxxxxxxxxxx>; Jose Abreu <joabreu@xxxxxxxxxxxx>; David S . Miller <davem@xxxxxxxxxxxxx>; Eric Dumazet <edumazet@xxxxxxxxxx>; Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo Abeni <pabeni@xxxxxxxxxx>; Maxime Coquelin <mcoquelin.stm32@xxxxxxxxx>; Chang, Junxiao <junxiao.chang@xxxxxxxxx>; netdev@xxxxxxxxxxxxxxx; linux-stm32@xxxxxxxxxxxxxxxxxxxxxxxxxxxx; linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
Subject: Re: [PATCH net] net: stmmac: fix double serdes powerdown

On Wed, Jun 21, 2023 at 03:55:37PM +0200, Bartosz Golaszewski wrote:
> From: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>
>
> Commit 49725ffc15fc ("net: stmmac: power up/down serdes in
> stmmac_open/release") correctly added a call to the serdes_powerdown()
> callback to stmmac_release() but did not remove the one from
> stmmac_remove() which leads to a doubled call to serdes_powerdown().
>
> This can lead to all kinds of problems: in the case of the qcom ethqos
> driver, it caused an unbalanced regulator disable splat.
>
> Fixes: 49725ffc15fc ("net: stmmac: power up/down serdes in
> stmmac_open/release")
> Signed-off-by: Bartosz Golaszewski <bartosz.golaszewski@xxxxxxxxxx>

Reviewed-by: Andrew Halaney <ahalaney@xxxxxxxxxx>
Tested-by: Andrew Halaney <ahalaney@xxxxxxxxxx>

> ---
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 10e8a5606ba6..4727f7be4f86 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -7461,12 +7461,6 @@ void stmmac_dvr_remove(struct device *dev)
> netif_carrier_off(ndev);
> unregister_netdev(ndev);
>
> - /* Serdes power down needs to happen after VLAN filter
> - * is deleted that is triggered by unregister_netdev().
> - */
> - if (priv->plat->serdes_powerdown)
> - priv->plat->serdes_powerdown(ndev, priv->plat->bsp_priv);
> -
> #ifdef CONFIG_DEBUG_FS
> stmmac_exit_fs(ndev);
> #endif
> --
> 2.39.2
>