Hi Lauri, I think we should merge your patch along with the SO patch also, so in the event of a spurious interrupt, it won't wedge the whole system. One question though: On Wed, 15 Oct 2008, Lauri Leukkunen wrote: > This prevents spurious interrupts from repeating unacked and > thus locking the system, while still allowing the spurious > bad irq error message to be show on console. > > Signed-off-by: Lauri Leukkunen <lauri.leukkunen@xxxxxxxxx> > --- > arch/arm/plat-omap/include/mach/entry-macro.S | 21 ++++++++++++++++++++- > 1 files changed, 20 insertions(+), 1 deletions(-) > > diff --git a/arch/arm/plat-omap/include/mach/entry-macro.S b/arch/arm/plat-omap/include/mach/entry-macro.S > index a8fca9d..c88a4cb 100644 > --- a/arch/arm/plat-omap/include/mach/entry-macro.S > +++ b/arch/arm/plat-omap/include/mach/entry-macro.S > @@ -87,7 +87,26 @@ > ldr \irqnr, [\base, #0xd8] /* IRQ pending reg 3 */ > cmp \irqnr, #0x0 > 2222: > - ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET] > +#if defined(CONFIG_ARCH_OMAP34XX) > + mov \tmp, \irqnr > +#endif > + ldrne \irqnr, [\base, #INTCPS_SIR_IRQ_OFFSET] > +#if defined(CONFIG_ARCH_OMAP34XX) > + mov \irqstat, \irqnr > + bic \irqstat, \irqstat, #0x7f /* check for spurious flag */ According to Table 10-14 in the TRM, the spurious flag field is 25 bits wide, but the patch only checks for 7 bits. This should probably be extended? > + cmp \irqstat, #0x0 > + beq 2223f > + mov \irqstat, #0x1 /* Ack the spurious irq, this lets it > + * generate a bad irq error message, > + * but prevents infinitely repeating > + * irq. > + */ > + str \irqstat, [\base, #0x48] /* INTC_CONTROL register */ > +2223: > + cmp \tmp, #0x0 /* set conditional back to what it was > + * before spurious test > + */ > +#endif > > .endm > - Paul -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html