Messages in this thread Patch in this message | | | Date | Wed, 12 Dec 2007 15:41:00 -0500 (EST) | From | Steven Rostedt <> | Subject | [PATCH RT] add pending in fasteoi for IOAPIC hack |
| |
The IOAPIC hack that does a level=>edge to mask does not disable interrupts. So we can receive interrupts when masked, and this means that we can miss interrupts that arrive when the thread is handling them.
This patch adds the "IRQ_PENDING" logic of the edge irqs to be able to catch interrupts coming in when supposably "masked".
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Index: linux-2.6.21-rt-hack/kernel/irq/chip.c =================================================================== --- linux-2.6.21-rt-hack.orig/kernel/irq/chip.c +++ linux-2.6.21-rt-hack/kernel/irq/chip.c @@ -398,8 +398,10 @@ handle_fasteoi_irq(unsigned int irq, str
spin_lock(&desc->lock);
- if (unlikely(desc->status & IRQ_INPROGRESS)) + if (unlikely(desc->status & IRQ_INPROGRESS)) { + desc->status |= IRQ_PENDING; goto out; + }
desc->status &= ~(IRQ_REPLAY | IRQ_WAITING); kstat_cpu(cpu).irqs[irq]++;
| |