All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH (net.git)] stmmac: fix resource management when resume
@ 2015-12-04  6:21 Giuseppe Cavallaro
  2015-12-04  7:28 ` Giuseppe CAVALLARO
  2015-12-05 22:49 ` David Miller
  0 siblings, 2 replies; 5+ messages in thread
From: Giuseppe Cavallaro @ 2015-12-04  6:21 UTC (permalink / raw)
  To: netdev; +Cc: Giuseppe Cavallaro, David S. Miller

There is a memleak when suspend/resume this driver version.
Currently the stmmac, during resume step, reallocates all the resources
but they are not released when suspend.
The patch is not to release these resources but the logic has been changed.
In fact, it is not necessary to free and reallocate all from scratch
because the memory data will be always preserved.
As final solution, the patch just reinit the descriptors and the rx/tx
pointers only when resume. Tested done on STi boxes.

Reported-by: ZhengShunQian <zhengsq@rock-chips.com>
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: David S. Miller <davem@davemloft.net>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 3c6549a..a5b869e 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3046,8 +3046,6 @@ int stmmac_suspend(struct net_device *ndev)
 	priv->hw->dma->stop_tx(priv->ioaddr);
 	priv->hw->dma->stop_rx(priv->ioaddr);
 
-	stmmac_clear_descriptors(priv);
-
 	/* Enable Power down mode by programming the PMT regs */
 	if (device_may_wakeup(priv->device)) {
 		priv->hw->mac->pmt(priv->hw, priv->wolopts);
@@ -3105,7 +3103,12 @@ int stmmac_resume(struct net_device *ndev)
 
 	netif_device_attach(ndev);
 
-	init_dma_desc_rings(ndev, GFP_ATOMIC);
+	priv->cur_rx = 0;
+	priv->dirty_rx = 0;
+	priv->dirty_tx = 0;
+	priv->cur_tx = 0;
+	stmmac_clear_descriptors(priv);
+
 	stmmac_hw_setup(ndev, false);
 	stmmac_init_tx_coalesce(priv);
 	stmmac_set_rx_mode(ndev);
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH (net.git)] stmmac: fix resource management when resume
  2015-12-04  6:21 [PATCH (net.git)] stmmac: fix resource management when resume Giuseppe Cavallaro
@ 2015-12-04  7:28 ` Giuseppe CAVALLARO
  2015-12-05 22:49 ` David Miller
  1 sibling, 0 replies; 5+ messages in thread
From: Giuseppe CAVALLARO @ 2015-12-04  7:28 UTC (permalink / raw)
  To: David S. Miller; +Cc: netdev

Hi David

This is the v2, sorry I missed it in the subject.

Re-based on top of net.git.

peppe

On 12/4/2015 7:21 AM, Giuseppe Cavallaro wrote:
> There is a memleak when suspend/resume this driver version.
> Currently the stmmac, during resume step, reallocates all the resources
> but they are not released when suspend.
> The patch is not to release these resources but the logic has been changed.
> In fact, it is not necessary to free and reallocate all from scratch
> because the memory data will be always preserved.
> As final solution, the patch just reinit the descriptors and the rx/tx
> pointers only when resume. Tested done on STi boxes.
>
> Reported-by: ZhengShunQian <zhengsq@rock-chips.com>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> Cc: David S. Miller <davem@davemloft.net>
> ---
>   drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |    9 ++++++---
>   1 files changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 3c6549a..a5b869e 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> @@ -3046,8 +3046,6 @@ int stmmac_suspend(struct net_device *ndev)
>   	priv->hw->dma->stop_tx(priv->ioaddr);
>   	priv->hw->dma->stop_rx(priv->ioaddr);
>
> -	stmmac_clear_descriptors(priv);
> -
>   	/* Enable Power down mode by programming the PMT regs */
>   	if (device_may_wakeup(priv->device)) {
>   		priv->hw->mac->pmt(priv->hw, priv->wolopts);
> @@ -3105,7 +3103,12 @@ int stmmac_resume(struct net_device *ndev)
>
>   	netif_device_attach(ndev);
>
> -	init_dma_desc_rings(ndev, GFP_ATOMIC);
> +	priv->cur_rx = 0;
> +	priv->dirty_rx = 0;
> +	priv->dirty_tx = 0;
> +	priv->cur_tx = 0;
> +	stmmac_clear_descriptors(priv);
> +
>   	stmmac_hw_setup(ndev, false);
>   	stmmac_init_tx_coalesce(priv);
>   	stmmac_set_rx_mode(ndev);
>

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH (net.git)] stmmac: fix resource management when resume
  2015-12-04  6:21 [PATCH (net.git)] stmmac: fix resource management when resume Giuseppe Cavallaro
  2015-12-04  7:28 ` Giuseppe CAVALLARO
@ 2015-12-05 22:49 ` David Miller
  1 sibling, 0 replies; 5+ messages in thread
From: David Miller @ 2015-12-05 22:49 UTC (permalink / raw)
  To: peppe.cavallaro; +Cc: netdev

From: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Date: Fri, 4 Dec 2015 07:21:06 +0100

> There is a memleak when suspend/resume this driver version.
> Currently the stmmac, during resume step, reallocates all the resources
> but they are not released when suspend.
> The patch is not to release these resources but the logic has been changed.
> In fact, it is not necessary to free and reallocate all from scratch
> because the memory data will be always preserved.
> As final solution, the patch just reinit the descriptors and the rx/tx
> pointers only when resume. Tested done on STi boxes.
> 
> Reported-by: ZhengShunQian <zhengsq@rock-chips.com>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>

Applied, thanks.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH (net.git)] stmmac: fix resource management when resume
  2015-11-26 10:32 ` [PATCH (net.git)] stmmac: fix resource management when resume Giuseppe Cavallaro
@ 2015-11-30 19:54   ` David Miller
  0 siblings, 0 replies; 5+ messages in thread
From: David Miller @ 2015-11-30 19:54 UTC (permalink / raw)
  To: peppe.cavallaro; +Cc: netdev

From: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Date: Thu, 26 Nov 2015 11:32:04 +0100

> There is a memleak when suspend/resume this driver version.
> Currently the stmmac, during resume step, reallocates all the resources
> but they are not released when suspend.
> The patch is not to release these resources but the logic has been changed.
> In fact, it is not necessary to free and reallocate all from scratch
> because the memory data will be always preserved.
> As final solution, the patch just reinit the descriptors and the rx/tx
> pointers only when resume. Tested done on STi boxes.
> 
> Reported-by: ZhengShunQian <zhengsq@rock-chips.com>
> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>

This doesn't apply to the 'net' tree.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH (net.git)] stmmac: fix resource management when resume
  2015-11-22  8:44 [RFC PATCH v1] Trying to fix the stmmac memory leak during suspend/resume Shunqian Zheng
@ 2015-11-26 10:32 ` Giuseppe Cavallaro
  2015-11-30 19:54   ` David Miller
  0 siblings, 1 reply; 5+ messages in thread
From: Giuseppe Cavallaro @ 2015-11-26 10:32 UTC (permalink / raw)
  To: netdev; +Cc: Giuseppe Cavallaro, David S. Miller

There is a memleak when suspend/resume this driver version.
Currently the stmmac, during resume step, reallocates all the resources
but they are not released when suspend.
The patch is not to release these resources but the logic has been changed.
In fact, it is not necessary to free and reallocate all from scratch
because the memory data will be always preserved.
As final solution, the patch just reinit the descriptors and the rx/tx
pointers only when resume. Tested done on STi boxes.

Reported-by: ZhengShunQian <zhengsq@rock-chips.com>
Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Cc: David S. Miller <davem@davemloft.net>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 64d8aa4..5a1abc0 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -3040,8 +3040,6 @@ int stmmac_suspend(struct net_device *ndev)
 	priv->hw->dma->stop_tx(priv->ioaddr);
 	priv->hw->dma->stop_rx(priv->ioaddr);
 
-	stmmac_clear_descriptors(priv);
-
 	/* Enable Power down mode by programming the PMT regs */
 	if (device_may_wakeup(priv->device)) {
 		priv->hw->mac->pmt(priv->hw, priv->wolopts);
@@ -3099,7 +3097,12 @@ int stmmac_resume(struct net_device *ndev)
 
 	netif_device_attach(ndev);
 
-	init_dma_desc_rings(ndev, GFP_ATOMIC);
+	priv->cur_rx = 0;
+	priv->dirty_rx = 0;
+	priv->dirty_tx = 0;
+	priv->cur_tx = 0;
+	stmmac_clear_descriptors(priv);
+
 	stmmac_hw_setup(ndev, false);
 	stmmac_init_tx_coalesce(priv);
 
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-12-05 22:49 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-12-04  6:21 [PATCH (net.git)] stmmac: fix resource management when resume Giuseppe Cavallaro
2015-12-04  7:28 ` Giuseppe CAVALLARO
2015-12-05 22:49 ` David Miller
  -- strict thread matches above, loose matches on Subject: below --
2015-11-22  8:44 [RFC PATCH v1] Trying to fix the stmmac memory leak during suspend/resume Shunqian Zheng
2015-11-26 10:32 ` [PATCH (net.git)] stmmac: fix resource management when resume Giuseppe Cavallaro
2015-11-30 19:54   ` David Miller

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.