Messages in this thread | | | Date | Fri, 8 Jun 2012 18:33:09 -0400 | Subject | Re: NOHZ: local_softirq_pending 08 | From | Marc Dionne <> |
| |
On Fri, Jun 8, 2012 at 5:53 PM, Francois Romieu <romieu@fr.zoreil.com> wrote: > Thomas Gleixner <tglx@linutronix.de> : > [...] >> 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/
| |