genirq: enable polling for disabled screaming irqs
authorEric W. Biederman <ebiederm@xmission.com>
Thu, 10 Jul 2008 21:48:54 +0000 (14:48 -0700)
committerIngo Molnar <mingo@elte.hu>
Fri, 18 Jul 2008 17:21:13 +0000 (19:21 +0200)
commitf84dbb912f344270f31d5cce974f12908a47798d
tree0eb8543dc2f9455decd0c69f07d40f03e1868932
parent5b664cb235e97afbf34db9c4d77f08ebd725335e
genirq: enable polling for disabled screaming irqs

When we disable a screaming irq we never see it again.  If the irq
line is shared or if the driver half works this is a real pain.  So
periodically poll the handlers for screaming interrupts.

I use a timer instead of the classic irq poll technique of working off
the timer interrupt because when we use the local apic timers
note_interrupt is never called (bug?).  Further on a system with
dynamic ticks the timer interrupt might not even fire unless there is
a timer telling it it needs to.

I forced this case on my test system with an e1000 nic and my ssh
session remained responsive despite the interrupt handler only being
called every 10th of a second.

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
kernel/irq/spurious.c