Hello Steven, > In commit 76d2160147f43f982dfe881404cfde9fd0a9da21 lazy irq disabling > was implemented, and the simple irq handler had a masking set to it. > > Remy Bohmer discovered that some devices in the ARM architecture > would trigger the mask, but never unmask it. His patch to do the > unmasking was questioned by Russell King about masking simple irqs > to begin with. Looking further, it was discovered that the problems > Remy was seeing was due to improper use of the simple handler by > devices, and he later submitted patches to fix those. But the issue > that was uncovered was that the simple handler should never mask. > > This patch reverts the masking in the simple handler. > Acked-by: Remy Bohmer <[EMAIL PROTECTED]>
> --- > kernel/irq/chip.c | 9 ++------- > 1 file changed, 2 insertions(+), 7 deletions(-) > > Index: linux-compile.git/kernel/irq/chip.c > =================================================================== > --- linux-compile.git.orig/kernel/irq/chip.c 2007-10-19 12:37:51.000000000 > -0400 > +++ linux-compile.git/kernel/irq/chip.c 2007-12-12 15:03:43.000000000 -0500 > @@ -297,18 +297,13 @@ handle_simple_irq(unsigned int irq, stru > > if (unlikely(desc->status & IRQ_INPROGRESS)) > goto out_unlock; > + desc->status &= ~(IRQ_REPLAY | IRQ_WAITING); > kstat_cpu(cpu).irqs[irq]++; > > action = desc->action; > - if (unlikely(!action || (desc->status & IRQ_DISABLED))) { > - if (desc->chip->mask) > - desc->chip->mask(irq); > - desc->status &= ~(IRQ_REPLAY | IRQ_WAITING); > - desc->status |= IRQ_PENDING; > + if (unlikely(!action || (desc->status & IRQ_DISABLED))) > goto out_unlock; > - } > > - desc->status &= ~(IRQ_REPLAY | IRQ_WAITING | IRQ_PENDING); > desc->status |= IRQ_INPROGRESS; > spin_unlock(&desc->lock); > > > -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/