From: DDD <Dongdong.deng@windriver.com>
To: Matt Mackall <mpm@selenic.com>
Cc: linux-kernel@vger.kernel.org, Ingo Molnar <mingo@elte.hu>,
David Miller <davem@davemloft.net>,
netdev@vger.kernel.org
Subject: Re: [PATCH] netpoll: WARN_ONCE for start_xmit returns with interrupts enabled
Date: Thu, 20 Aug 2009 18:44:00 +0800 [thread overview]
Message-ID: <1250765040.17891.91.camel@dengdd-desktop> (raw)
In-Reply-To: <1250678596.3937.182.camel@calx>
On Wed, 2009-08-19 at 05:43 -0500, Matt Mackall wrote:
> On Wed, 2009-08-19 at 18:43 +0800, DDD wrote:
> > The NETPOLL API requires that interrupts remain disabled in
> > netpoll_send_skb().
> >
> > Add a WARN_ONCE when ndo_start_xmit returns with interrupts enabled
> > in netpoll_send_skb().
> >
> > Signed-off-by: Dongdong Deng <dongdong.deng@windriver.com>
> > ---
> > net/core/netpoll.c | 6 ++++++
> > 1 files changed, 6 insertions(+), 0 deletions(-)
> >
> > diff --git a/net/core/netpoll.c b/net/core/netpoll.c
> > index df30feb..d38103f 100644
> > --- a/net/core/netpoll.c
> > +++ b/net/core/netpoll.c
> > @@ -319,6 +319,12 @@ static void netpoll_send_skb(struct netpoll *np, struct sk_buff *skb)
> >
> > udelay(USEC_PER_POLL);
> > }
> > +
> > + WARN_ONCE(!irqs_disabled(),
> > + KERN_WARNING "netpoll_send_skb(): [net driver %s]"
> > + "ndo_start_xmit() shouldn't return with interrupts"
> > + "enabled!", dev->name);
>
> Hmm, perhaps:
>
> "netpoll_send_skb(): %s enabled interrupts in poll (%pF)\n",
> dev->name, ops->ndo_start_xmit
>
> That'll give us a real function name and maybe even a module name.
Thanks, I will modify it as your suggestions.
When I test the WRAN_ONCE, I find that some net drivers still have this problem,
such as using local_irq_disable/local_irq_enable in ndo_start_xmit() or other cases.
I will do an new patch and hope it could fix this problem completely in all the net drivers that support NETPOLL.
I check the drivers that support NETPOLL one by one again(almost 100 drivers),
and following drivers's fix will be included by my patch:
1: ixp2000/ixpdev.c : 66 local_irq_disable
2: fec_mpc52xx.c : 319 spin_unlock_irq
3: macb.c:602 : 638 spin_unlock_irq
4: mlx4/en_netdev.c : 448
mlx4_en_xmit() -> mlx4_en_xmit_poll() -> spin_trylock_irq
5: smc91x.c
It seems that there is a lots work to let smc91x work well with netpoll.
Thanks,
Dongdong
>
prev parent reply other threads:[~2009-08-20 10:31 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-08-19 10:43 [PATCH] netpoll: WARN_ONCE for start_xmit returns with interrupts enabled DDD
2009-08-19 10:43 ` Matt Mackall
2009-08-20 10:44 ` DDD [this message]
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=1250765040.17891.91.camel@dengdd-desktop \
--to=dongdong.deng@windriver.com \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@elte.hu \
--cc=mpm@selenic.com \
--cc=netdev@vger.kernel.org \
/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.