Commit 64943205 authored by Russell King's avatar Russell King

[ARM] ecard: dumpirq state on unrecognised interrupts as well.

parent 3fb07877
...@@ -503,12 +503,18 @@ void ecard_disablefiq(unsigned int fiqnr) ...@@ -503,12 +503,18 @@ void ecard_disablefiq(unsigned int fiqnr)
} }
} }
static void static void ecard_dump_irq_state(void)
ecard_dump_irq_state(ecard_t *ec)
{ {
ecard_t *ec;
printk("Expansion card IRQ state:\n");
for (ec = cards; ec; ec = ec->next) {
if (ec->slot_no == 8)
continue;
printk(" %d: %sclaimed, ", printk(" %d: %sclaimed, ",
ec->slot_no, ec->slot_no, ec->claimed ? "" : "not ");
ec->claimed ? "" : "not ");
if (ec->ops && ec->ops->irqpending && if (ec->ops && ec->ops->irqpending &&
ec->ops != &ecard_default_ops) ec->ops != &ecard_default_ops)
...@@ -517,13 +523,13 @@ ecard_dump_irq_state(ecard_t *ec) ...@@ -517,13 +523,13 @@ ecard_dump_irq_state(ecard_t *ec)
else else
printk("irqaddr %p, mask = %02X, status = %02X\n", printk("irqaddr %p, mask = %02X, status = %02X\n",
ec->irqaddr, ec->irqmask, *ec->irqaddr); ec->irqaddr, ec->irqmask, *ec->irqaddr);
}
} }
static void ecard_check_lockup(struct irqdesc *desc) static void ecard_check_lockup(struct irqdesc *desc)
{ {
static unsigned long last; static unsigned long last;
static int lockup; static int lockup;
ecard_t *ec;
/* /*
* If the timer interrupt has not run since the last million * If the timer interrupt has not run since the last million
...@@ -541,11 +547,7 @@ static void ecard_check_lockup(struct irqdesc *desc) ...@@ -541,11 +547,7 @@ static void ecard_check_lockup(struct irqdesc *desc)
"disabling all expansion card interrupts\n"); "disabling all expansion card interrupts\n");
desc->chip->mask(IRQ_EXPANSIONCARD); desc->chip->mask(IRQ_EXPANSIONCARD);
ecard_dump_irq_state();
printk("Expansion card IRQ state:\n");
for (ec = cards; ec; ec = ec->next)
ecard_dump_irq_state(ec);
} }
} else } else
lockup = 0; lockup = 0;
...@@ -557,6 +559,7 @@ static void ecard_check_lockup(struct irqdesc *desc) ...@@ -557,6 +559,7 @@ static void ecard_check_lockup(struct irqdesc *desc)
if (!last || time_after(jiffies, last + 5*HZ)) { if (!last || time_after(jiffies, last + 5*HZ)) {
last = jiffies; last = jiffies;
printk(KERN_WARNING "Unrecognised interrupt from backplane\n"); printk(KERN_WARNING "Unrecognised interrupt from backplane\n");
ecard_dump_irq_state();
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment