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    [from the cache]
©2003-2011 Jasper Spaans