Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1760598Ab2FHWdM (ORCPT ); Fri, 8 Jun 2012 18:33:12 -0400 Received: from mail-we0-f174.google.com ([74.125.82.174]:47770 "EHLO mail-we0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754593Ab2FHWdK convert rfc822-to-8bit (ORCPT ); Fri, 8 Jun 2012 18:33:10 -0400 MIME-Version: 1.0 In-Reply-To: <20120608215328.GB26175@electric-eye.fr.zoreil.com> References: <20120605231550.GA20981@electric-eye.fr.zoreil.com> <20120606014656.GA24870@redhat.com> <20120606054251.GA24467@electric-eye.fr.zoreil.com> <20120608023420.GD7191@redhat.com> <20120608142333.GB1711@redhat.com> <20120608202701.GA26175@electric-eye.fr.zoreil.com> <20120608215328.GB26175@electric-eye.fr.zoreil.com> Date: Fri, 8 Jun 2012 18:33:09 -0400 Message-ID: Subject: Re: NOHZ: local_softirq_pending 08 From: Marc Dionne To: Francois Romieu Cc: Thomas Gleixner , Dave Jones , Linux Kernel Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 1880 Lines: 50 On Fri, Jun 8, 2012 at 5:53 PM, Francois Romieu wrote: > Thomas Gleixner : > [...] >> Though the problem is, that it is neither called in interrupt context >> nor with bh disabled, so nothing invokes the softirq before it reaches >> idle. >> >> In hard interrupt context the pending flag is evaluated in irq_exit() >> and the softirqs are invoked from there. If you call that from thread >> context, then a bh_disable/enable pair will make sure that the pending >> softirq is invoked. Did I miss some more ___underscore magic which >> does that ? > > No. You _are_ right. > > That's why 98ddf986fca17840e46e070354b7e2cd2169da15 triggered the > message: it removed the last bh lock in the r8169 slow work context. > > /me slaps head... > > The whole thing is probably moot. Dave, can you apply the patch > below on top of a fresh kernel tree ? > > diff --git a/drivers/net/ethernet/realtek/r8169.c b/drivers/net/ethernet/realtek/r8169.c > index 4a05b68..d452441 100644 > --- a/drivers/net/ethernet/realtek/r8169.c > +++ b/drivers/net/ethernet/realtek/r8169.c > @@ -5934,11 +5934,7 @@ static void rtl_slow_event_work(struct rtl8169_private *tp) > ? ? ? ?if (status & LinkChg) > ? ? ? ? ? ? ? ?__rtl8169_check_link_status(dev, tp, tp->mmio_addr, true); > > - ? ? ? napi_disable(&tp->napi); > - ? ? ? rtl_irq_disable(tp); > - > - ? ? ? napi_enable(&tp->napi); > - ? ? ? napi_schedule(&tp->napi); > + ? ? ? rtl_irq_enable_all(tp); > ?} > > ?static void rtl_task(struct work_struct *work) That works for me - no warnings after several reboots and bringing the interface up/down many times. Marc -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/