Thread (5 messages) 5 messages, 2 authors, 2016-12-07

Re: [PATCH RT] net: Have __napi_schedule_irqoff() disable interrupts on RT

From: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Date: 2016-12-07 09:37:14
Also in: lkml

On 2016-12-06 17:50:30 [-0500], Steven Rostedt wrote:
A customer hit a crash where the napi sd->poll_list became corrupted.
The customer had the bnx2x driver, which does a
__napi_schedule_irqoff() in its interrupt handler. Unfortunately, when
running with CONFIG_PREEMPT_RT_FULL, this interrupt handler is run as a
thread and is preemptable. The call to ____napi_schedule() must be done
with interrupts disabled to protect the per cpu softnet_data's
poll_list, which is protected by disabling interrupts (disabling
preemption is enough when all interrupts are threaded and
local_bh_disable() can't preempt).

As bnx2x isn't the only driver that does this, the safest thing to do
is to make __napi_schedule_irqoff() call __napi_schedule() instead when
CONFIG_PREEMPT_RT_FULL is enabled, which will call local_irq_save()
before calling ____napi_schedule().
It would work RT wise. But don't have the same problem if you boot the
kernel with threadirqs ?

Sebastian
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help