Thread (5 messages) flat view 5 messages, 2 authors, 2003-05-15

Re: IDE driver support in PPC440

From: Eugene Surovegin <hidden>
Date: 2003-05-14 16:57:51

At 08:20 AM 5/14/2003, Xupei Liang wrote:
Hi, Eugene,

The IRQ7 is setup as level trigger and active low.
<snip>
This time, ppc405_pic_get_irq() returns irq 64 because
the routine knows that all interrupts have been
disabled (I have looked at UIC_ER0 and UIC_ER1
and verified that is the case).
No, this is not correct, it should return -1.
Otherwise do_IRQ will spin forever (see arch/ppc/kernel/irq.c)

Here is the code in question:

int
ppc405_pic_get_irq(struct pt_regs *regs)
{

        ........

         if (irq == (NR_UIC_IRQS * NR_UICS))
                 irq = -1;

#ifdef UIC_DEBUG
         printk("ppc405_pic_get_irq - irq %d bit 0x%x\n", irq, bits);
#endif

         return (irq);
}


Check, that NR_UIC_IRQS == 32 (defined in include/arch-ppc/irq.h)
and NR_UICS == 2 (defined in /include/arch-ppc/ibm440.h) in your tree.

They weren't set correctly in some early versions of 440GP code.

Eugene


** Sent via the linuxppc-embedded mail list. See http://lists.linuxppc.org/
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help