[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <DB8PR04MB6795667EDA944455335135CCE6F30@DB8PR04MB6795.eurprd04.prod.outlook.com>
Date: Wed, 2 Dec 2020 09:12:28 +0000
From: Joakim Zhang <qiangqing.zhang@....com>
To: Joakim Zhang <qiangqing.zhang@....com>,
"peppe.cavallaro@...com" <peppe.cavallaro@...com>,
"alexandre.torgue@...com" <alexandre.torgue@...com>,
"joabreu@...opsys.com" <joabreu@...opsys.com>
CC: "davem@...emloft.net" <davem@...emloft.net>,
"kuba@...nel.org" <kuba@...nel.org>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
dl-linux-imx <linux-imx@....com>
Subject: RE: [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer
after napi disabled
Hi,
Please ignore this patch due to wrongly send out. Sorry.
Best Regards,
Joakim Zhang
> -----Original Message-----
> From: Joakim Zhang <qiangqing.zhang@....com>
> Sent: 2020年12月2日 17:00
> To: peppe.cavallaro@...com; alexandre.torgue@...com;
> joabreu@...opsys.com
> Cc: davem@...emloft.net; kuba@...nel.org; netdev@...r.kernel.org;
> dl-linux-imx <linux-imx@....com>
> Subject: [PATCH] LF-2678 net: ethernet: stmmac: delete the eee_ctrl_timer
> after napi disabled
>
> From: Fugang Duan <fugang.duan@....com>
>
> There have chance to re-enable the eee_ctrl_timer and fire the timer in napi
> callback after delete the timer in .stmmac_release(), which introduces to
> access eee registers in the timer function after clocks are disabled then causes
> system hang.
>
> It is safe to delete the timer after napi disabled and disable lpi mode.
>
> Tested-by: Joakim Zhang <qiangqing.zhang@....com>
> Reviewed-by: Joakim Zhang <qiangqing.zhang@....com>
> Signed-off-by: Fugang Duan <fugang.duan@....com>
> ---
> drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index cc1f17b170f0..7e655fa34589 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -2933,9 +2933,6 @@ static int stmmac_release(struct net_device *dev)
> struct platform_device *pdev = to_platform_device(priv->device);
> u32 chan;
>
> - if (priv->eee_enabled)
> - del_timer_sync(&priv->eee_ctrl_timer);
> -
> if (device_may_wakeup(priv->device))
> phylink_speed_down(priv->phylink, false);
> /* Stop and disconnect the PHY */
> @@ -2954,6 +2951,11 @@ static int stmmac_release(struct net_device *dev)
> if (priv->lpi_irq > 0)
> free_irq(priv->lpi_irq, dev);
>
> + if (priv->eee_enabled) {
> + priv->tx_path_in_lpi_mode = false;
> + del_timer_sync(&priv->eee_ctrl_timer);
> + }
> +
> /* Stop TX/RX DMA and clear the descriptors */
> stmmac_stop_all_dma(priv);
>
> @@ -5224,6 +5226,11 @@ int stmmac_suspend(struct device *dev)
> for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
> del_timer_sync(&priv->tx_queue[chan].txtimer);
>
> + if (priv->eee_enabled) {
> + priv->tx_path_in_lpi_mode = false;
> + del_timer_sync(&priv->eee_ctrl_timer);
> + }
> +
> /* Stop TX/RX DMA */
> stmmac_stop_all_dma(priv);
>
> --
> 2.17.1
Powered by blists - more mailing lists