kernel 2.6.3 on JS20
Paul Mackerras
paulus at samba.org
Fri Mar 5 16:14:15 EST 2004
Jake Moilanen writes:
> I just ran into this one after pulling this morning. This looks like a
> result of IDE probing for devices generating an interrupt as a side
> effect, but not having called request_irq(). request_irq will put the
> real-to-virtual mapping in the radix tree. Since that has not occurred
> xics_get_irq() will not know about the early interrupt and will disable
> it. This will cause all future interrupts to be missed for IDE. I've
> attached a patch to fix the problem by going down the "slow path" in
> finding the real-to-virtual mappings of the irq when the radix tree
> takes a miss.
OK, I see, the thing I missed previously is that we need to set the
IRQ_DISABLED bit in irq_desc[virq].status for the virtual irq
corresponding to the real irq we got. Your patch looks OK except for
a couple of very minor points. I would call the real->virt mapping
function in irq.c real_irq_to_virt_slow() and leave the one in xics.c
as real_irq_to_virt(). And I would structure the test as:
} else {
irq = real_irq_to_virt(vec);
if (irq == NO_IRQ)
irq = real_irq_to_virt_slow(vec);
if (irq == NO_IRQ) {
printk(...)
etc., and save a level of indentation that way.
Regards,
Paul.
** Sent via the linuxppc64-dev mail list. See http://lists.linuxppc.org/
More information about the Linuxppc64-dev
mailing list