[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] net: Detect drivers that reschedule NAPI and exhaust budget
On Fri, Dec 19, 2014 at 09:40:00PM -0500, David Miller wrote: > From: Eric Dumazet <eric.dumazet@xxxxxxxxx> > Date: Fri, 19 Dec 2014 17:34:48 -0800 > > >> @@ -4620,7 +4620,11 @@ static void net_rx_action(struct softirq_action *h) > >> */ > >> napi_gro_flush(n, HZ >= 1000); > >> } > >> - list_add_tail(&n->poll_list, &repoll); > >> + /* Some drivers may have called napi_schedule > >> + * prior to exhausting their budget. > >> + */ > >> + if (!WARN_ON_ONCE(!list_empty(&n->poll_list))) > >> + list_add_tail(&n->poll_list, &repoll); > >> } > >> } > >> > > > > I do not think stack trace will point to the buggy driver ? > > > > IMO it would be better to print a single line with the netdev name ? > > Right, we are already back from the poll routine and will just end > up seeing the call trace leading to the software interrupt. Good point Eric. -- >8 -- The commit d75b1ade567ffab085e8adbbdacf0092d10cd09c (net: less interrupt masking in NAPI) required drivers to leave poll_list empty if the entire budget is consumed. We have already had two broken drivers so let's add a check for this. Signed-off-by: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> diff --git a/net/core/dev.c b/net/core/dev.c index f411c28..47fdc5c 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4620,7 +4620,13 @@ static void net_rx_action(struct softirq_action *h) */ napi_gro_flush(n, HZ >= 1000); } - list_add_tail(&n->poll_list, &repoll); + /* Some drivers may have called napi_schedule + * prior to exhausting their budget. + */ + if (unlikely(!list_empty(&n->poll_list))) + pr_warn("%s: Budget exhausted after napi rescheduled\n", n->dev ? n->dev->name : "backlog"); + else + list_add_tail(&n->poll_list, &repoll); } } Thanks, -- Email: Herbert Xu <herbert@xxxxxxxxxxxxxxxxxxx> Home Page: http://gondor.apana.org.au/~herbert/ PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |