On Tue, 12 Oct 2010 15:55:28 -0500 <david.hag...@gmail.com> wrote: > I wonder about the next lines: > > > mpic_assign_isu(mpic1, 0, res.start + 0x10000); > > /* 48 Internal Interrupts */ > mpic_assign_isu(mpic1, 1, res.start + 0x10200); > mpic_assign_isu(mpic1, 2, res.start + 0x10400); > mpic_assign_isu(mpic1, 3, res.start + 0x10600); > > /* 16 External interrupts > * Moving them from [0 - 15] to [64 - 79] > */ > mpic_assign_isu(mpic1, 4, res.start + 0x10000);
No mainline 86xx boards do that, even in 2.6.26. I suspect you need to either get rid of the isu stuff altogether, or add a mapping for the MSI interrupts. > Looking at the code, and where it appears to be faulting, it looks like > its in kernel/irq/chip.c: > > > int set_irq_type(unsigned int irq, unsigned int type) > { > struct irq_desc *desc; > unsigned long flags; > int ret = -ENXIO; > > if (irq >= NR_IRQS) { > printk(KERN_ERR "Trying to set irq type for IRQ%d\n", irq); > return -ENODEV; > } > > desc = irq_desc + irq; > ------------------------ > if (desc->chip->set_type) { > spin_lock_irqsave(&desc->lock, flags); > ret = desc->chip->set_type(irq, type); > ------------------------ > > > spin_unlock_irqrestore(&desc->lock, flags); > } > return ret; > } > > My conjecture is that desc->chip isn't set. Is mpic_assign_isu the > function that does that? That happens in set_irq_chip_and_handler(), called from mpic_host_map() -- just a few lines before calling set_irq_type(). The crash is happening somewhere in mpic_set_irq_type(): > NIP [c0016540] mpic_set_irq_type+0x188/0x1c4 -Scott _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev