Re: twl4030 irq crashes

From: Thomas Gleixner
Date: Thu Oct 07 2010 - 14:37:48 EST


On Thu, 7 Oct 2010, Grazvydas Ignotas wrote:
> On Thu, Oct 7, 2010 at 1:59 AM, Thomas Gleixner <tglx@xxxxxxxxxxxxx> wrote:
> > On Thu, 7 Oct 2010, Grazvydas Ignotas wrote:
> >
> >> Hello,
> >>
> >> I've pulled today's (20101006) linux-next and twl4030 started crashing
> >> on certain interrupts. twl4030 irq code hasn't changed so it's
> >> probably genirq's fault:
> >>
> >> [    0.889739] Unable to handle kernel NULL pointer dereference at
> >> virtual address 00000000
> >> [    0.898193] pgd = c0004000
> >> [    0.901000] [00000000] *pgd=00000000
> >> [    0.904754] Internal error: Oops: 80000005 [#1]
> >> [    0.909484] last sysfs file:
> >> [    0.912567] Modules linked in:
> >> [    0.915771] CPU: 0    Not tainted
> >> (2.6.36-rc6-next-20101006-00001-g766a681-dirty #205)
> >> [    0.924133] PC is at 0x0
> >> [    0.926788] LR is at handle_edge_irq+0x84/0x14c
> >
> > Can you please decode that line with
> >
> > addr2line -e vmlinux c0077244
>
> kernel/irq/chip.c:725

The patch below should cure that.

Thanks,

tglx
---
diff --git a/drivers/mfd/twl4030-irq.c b/drivers/mfd/twl4030-irq.c
index 61c8664..b9fda70 100644
--- a/drivers/mfd/twl4030-irq.c
+++ b/drivers/mfd/twl4030-irq.c
@@ -810,7 +810,7 @@ int twl4030_init_irq(int irq_num, unsigned irq_base, unsigned irq_end)
twl4030_irq_chip = dummy_irq_chip;
twl4030_irq_chip.name = "twl4030";

- twl4030_sih_irq_chip.ack = dummy_irq_chip.ack;
+ twl4030_sih_irq_chip.irq_ack = dummy_irq_chip.irq_ack;

for (i = irq_base; i < irq_end; i++) {
set_irq_chip_and_handler(i, &twl4030_irq_chip,