Thread (15 messages) read the whole thread 15 messages, 5 authors, 2015-01-05

Re: e1000_netpoll(): disable_irq() triggers might_sleep() on linux-next

From: Peter Zijlstra <peterz@infradead.org>
Date: 2014-10-29 19:50:59
Also in: lkml

On Wed, Oct 29, 2014 at 08:49:03PM +0100, Thomas Gleixner wrote:
On Wed, 29 Oct 2014, Peter Zijlstra wrote:
quoted
On Wed, Oct 29, 2014 at 07:33:00PM +0100, Thomas Gleixner wrote:
quoted
Yuck. No. You are just papering over the problem.

What happens if you add 'threadirqs' to the kernel command line? Or if
the interrupt line is shared with a real threaded interrupt user?

The proper solution is to have a poll_lock for e1000 which serializes
the hardware interrupt against netpoll instead of using
disable/enable_irq().

In fact that's less expensive than the disable/enable_irq() dance and
the chance of contention is pretty low. If done right it will be a
NOOP for the CONFIG_NET_POLL_CONTROLLER=n case.
OK a little something like so then I suppose.. But I suspect most all
the network drivers will need this and maybe more, disable_irq() is a
popular little thing and we 'just' changed semantics on them.
We changed that almost 4 years ago :) What we 'just' did was to add a
prominent warning into the code.
You know that is the same right... they didn't know it was broken
therefore it wasn't :-), but now they need to go actually do stuff about
it, an entirely different proposition.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help