Re: Cannot unlock spinlock... Was: Problem in yenta.c, 2nd edition

From: David Woodhouse (dwmw2@infradead.org)
Date: Tue Nov 06 2001 - 17:40:49 EST


linux@hazard.jcu.cz said:
> The last message I got from kernel is: request_irq: desc->handler->
> startup(irq)

> Then problem is in the spin_unlock_irqrestore()???

> Any ideas, recomendations, suggestions?

It's dying in an IRQ storm. Something is permanently asserting IRQ 11, and
unless you can work out what's doing it and make it stop, the machine will
die whenever you enable that IRQ.

Try this hack, just to make sure:

Index: arch/i386/kernel/irq.c
===================================================================
RCS file: /inst/cvs/linux/arch/i386/kernel/irq.c,v
retrieving revision 1.4.2.29
diff -u -r1.4.2.29 irq.c
--- arch/i386/kernel/irq.c 2001/06/21 09:33:54 1.4.2.29
+++ arch/i386/kernel/irq.c 2001/08/15 16:50:01
@@ -552,6 +552,8 @@
         spin_unlock_irqrestore(&desc->lock, flags);
 }
 
+static unsigned int stormcount[NR_IRQS];
+
 /*
  * do_IRQ handles all normal device IRQ's (the special
  * SMP cross-CPU interrupts have their own specific
@@ -576,6 +578,15 @@
         unsigned int status;
 
         kstat.irqs[cpu][irq]++;
+ if (++stormcount[irq] > 200) {
+ printk(KERN_CRIT "IRQ storm detected on IRQ %d. Disabling\n", irq);
+ disable_irq(irq);
+ }
+ if(irq==0) {
+ int i;
+ for (i=0; i<NR_IRQS; i++)
+ stormcount[i] = 0;
+ }
         spin_lock(&desc->lock);
         desc->handler->ack(irq);
         /*

--
dwmw2

- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Wed Nov 07 2001 - 21:00:32 EST