All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Marangi <ansuelsmth@gmail.com>
To: Jakub Kicinski <kuba@kernel.org>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>,
	Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Jose Abreu <joabreu@synopsys.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [net-next PATCH RFC 2/5] net: ethernet: stmicro: stmmac: first disable all queues in release
Date: Wed, 29 Jun 2022 12:44:53 +0200	[thread overview]
Message-ID: <62bc2d26.1c69fb81.8efff.df8d@mx.google.com> (raw)
In-Reply-To: <20220628205435.44b0c78c@kernel.org>

On Tue, Jun 28, 2022 at 08:54:35PM -0700, Jakub Kicinski wrote:
> On Tue, 28 Jun 2022 03:33:39 +0200 Christian Marangi wrote:
> > +	stmmac_disable_all_queues(priv);
> > +
> > +	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
> > +		hrtimer_cancel(&priv->tx_queue[chan].txtimer);
> 
> IIRC this hrtimer is to check for completions. Canceling it before
> netif_tx_disable() looks odd, presumably until the queues are stopped
> the timer can get scheduled again, no?
> 

My concern is that at the time hrtimer_cancel is called there may be
some packet that still has to be processed and this cause kernel panic
as stmmac_release free the descriptor (and tx_clean try to free garbage
pointer)

Bu honestly I put the hrtimer_cancel up to be extra safe, the main
problem here was disabling napi polling after tx_disable that I think
was wrong from the start.

> >  	netif_tx_disable(dev);
> >  
> >  	if (device_may_wakeup(priv->device))
> > @@ -3764,11 +3769,6 @@ static int stmmac_release(struct net_device *dev)
> >  	phylink_stop(priv->phylink);
> >  	phylink_disconnect_phy(priv->phylink);
> >  
> > -	stmmac_disable_all_queues(priv);
> > -
> > -	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
> > -		hrtimer_cancel(&priv->tx_queue[chan].txtimer);

-- 
	Ansuel

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Christian Marangi <ansuelsmth@gmail.com>
To: Jakub Kicinski <kuba@kernel.org>
Cc: Giuseppe Cavallaro <peppe.cavallaro@st.com>,
	Alexandre Torgue <alexandre.torgue@foss.st.com>,
	Jose Abreu <joabreu@synopsys.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Paolo Abeni <pabeni@redhat.com>,
	Maxime Coquelin <mcoquelin.stm32@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	netdev@vger.kernel.org, linux-stm32@st-md-mailman.stormreply.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org
Subject: Re: [net-next PATCH RFC 2/5] net: ethernet: stmicro: stmmac: first disable all queues in release
Date: Wed, 29 Jun 2022 12:44:53 +0200	[thread overview]
Message-ID: <62bc2d26.1c69fb81.8efff.df8d@mx.google.com> (raw)
In-Reply-To: <20220628205435.44b0c78c@kernel.org>

On Tue, Jun 28, 2022 at 08:54:35PM -0700, Jakub Kicinski wrote:
> On Tue, 28 Jun 2022 03:33:39 +0200 Christian Marangi wrote:
> > +	stmmac_disable_all_queues(priv);
> > +
> > +	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
> > +		hrtimer_cancel(&priv->tx_queue[chan].txtimer);
> 
> IIRC this hrtimer is to check for completions. Canceling it before
> netif_tx_disable() looks odd, presumably until the queues are stopped
> the timer can get scheduled again, no?
> 

My concern is that at the time hrtimer_cancel is called there may be
some packet that still has to be processed and this cause kernel panic
as stmmac_release free the descriptor (and tx_clean try to free garbage
pointer)

Bu honestly I put the hrtimer_cancel up to be extra safe, the main
problem here was disabling napi polling after tx_disable that I think
was wrong from the start.

> >  	netif_tx_disable(dev);
> >  
> >  	if (device_may_wakeup(priv->device))
> > @@ -3764,11 +3769,6 @@ static int stmmac_release(struct net_device *dev)
> >  	phylink_stop(priv->phylink);
> >  	phylink_disconnect_phy(priv->phylink);
> >  
> > -	stmmac_disable_all_queues(priv);
> > -
> > -	for (chan = 0; chan < priv->plat->tx_queues_to_use; chan++)
> > -		hrtimer_cancel(&priv->tx_queue[chan].txtimer);

-- 
	Ansuel

  reply	other threads:[~2022-06-29 11:09 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-06-28  1:33 [net-next PATCH RFC 0/5] Add MTU change with stmmac interface running Christian Marangi
2022-06-28  1:33 ` Christian Marangi
2022-06-28  1:33 ` [net-next PATCH RFC 1/5] net: ethernet: stmicro: stmmac: move queue reset to dedicated functions Christian Marangi
2022-06-28  1:33   ` Christian Marangi
2022-06-28  1:33 ` [net-next PATCH RFC 2/5] net: ethernet: stmicro: stmmac: first disable all queues in release Christian Marangi
2022-06-28  1:33   ` Christian Marangi
2022-06-29  3:54   ` Jakub Kicinski
2022-06-29  3:54     ` Jakub Kicinski
2022-06-29 10:44     ` Christian Marangi [this message]
2022-06-29 10:44       ` Christian Marangi
2022-06-28  1:33 ` [net-next PATCH RFC 3/5] net: ethernet: stmicro: stmmac: move dma conf to dedicated struct Christian Marangi
2022-06-28  1:33   ` Christian Marangi
2022-06-28  1:33 ` [net-next PATCH RFC 4/5] net: ethernet: stmicro: stmmac: generate stmmac dma conf before open Christian Marangi
2022-06-28  1:33   ` Christian Marangi
2022-06-28  1:33 ` [net-next PATCH RFC 5/5] net: ethernet: stmicro: stmmac: permit MTU change with interface up Christian Marangi
2022-06-28  1:33   ` Christian Marangi
2022-06-29  3:58 ` [net-next PATCH RFC 0/5] Add MTU change with stmmac interface running Jakub Kicinski
2022-06-29  3:58   ` Jakub Kicinski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=62bc2d26.1c69fb81.8efff.df8d@mx.google.com \
    --to=ansuelsmth@gmail.com \
    --cc=alexandre.torgue@foss.st.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=joabreu@synopsys.com \
    --cc=kuba@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-stm32@st-md-mailman.stormreply.com \
    --cc=linux@armlinux.org.uk \
    --cc=mcoquelin.stm32@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=peppe.cavallaro@st.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.