[lkml]   [2012]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Patch in this message
    SubjectRe: NOHZ: local_softirq_pending 08
    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)

     \ /
      Last update: 2012-06-09 00:41    [W:0.022 / U:39.868 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site