> There's mpic stuff in the call trace, so the NULL host was OK.
>
> Look in arch/powerpc/platforms/86xx/pic.c.  What is the second-to-last
> parameter of mpc86xx_init_irq() in your kernel tree?  It's 256 in
> current upstream -- this is the number of IRQ sources the MPIC driver
> will handle.
>

One, thanks for your help - I do appreciate it.

In the tree I am working from, the call to mpc86xx_init_irq() function is
in a BSP file (ep8641a.c), and the line was

 mpic1 = mpic_alloc(np, res.start,
                        MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
                        16, NR_IRQS-4,
                        " MPIC     ");

I tried changing that to
mpic1 = mpic_alloc(np, res.start,
                        MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
                        16, 256,
                        " MPIC     ");

With no meaningful changes.

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);


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?

(yes, I know - update your kernel. I am 2 weeks from a delivery, I have to
merge driver changes to sRIO in along with all of this....)


_______________________________________________
Linuxppc-dev mailing list
Linuxppc-dev@lists.ozlabs.org
https://lists.ozlabs.org/listinfo/linuxppc-dev

Reply via email to