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