lkml.org 
[lkml]   [2012]   [Jun]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: NOHZ: local_softirq_pending 08
    Thomas Gleixner <tglx@linutronix.de> :
    [...]
    > I can't find the point where the warning is issued, but I think I
    > found the cause of the problem.
    >
    > static void rtl_slow_event_work(struct rtl8169_private *tp)
    > {
    > .....
    > napi_schedule(&tp->napi);
    > --> __napi_schedule();
    > --> list_add_tail(&napi->poll_list, &sd->poll_list);
    > __raise_softirq_irqoff(NET_RX_SOFTIRQ);
    >
    > This merily sets the softirq bit.
    >
    >
    > So this code is really wrong. It's called from full preemptible
    > context of the workqueue. And if the next thing is a context switch to
    > idle then the pending softirq check will trigger.

    void __napi_schedule(struct napi_struct *n)
    {
    unsigned long flags;

    local_irq_save(flags);
    ____napi_schedule(&__get_cpu_var(softnet_data), n);
    local_irq_restore(flags);
    }

    Are you saying that this stuff should be considered "preemptible" ?

    --
    Ueimor


    \
     
     \ /
      Last update: 2012-06-08 23:21    [W:0.021 / U:33.260 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site