Problem with OF interrupt parsing code
Benjamin Herrenschmidt
benh at kernel.crashing.org
Tue Oct 2 07:43:01 EST 2007
On Mon, 2007-10-01 at 16:37 -0500, Scott Wood wrote:
> Scott Wood wrote:
> >> The problem occurs now, if there is no device node defined for another
> >> PCI device. In this case, of_irq_map_pci() checks for an interrupt pin,
> >> searches again for the host bridge node and calls of_irq_map_raw() with
> >> the device node of the host bridge. The function finds the
> >> #interrupt-cells, #address-cells, interrupt-controller properties, but
> >> fails to find the interrupt-map property (because it's missing in the
> >> device tree). Therefore the function then tries to find a new parent,
> >> which leads to an endless loop (it always selects the PCI2ISA southbridge
> >> in the device tree).
> >
> > That seems likely... there should probably be some loop detection.
>
> Actually, it doesn't -- it should stop when it sees the
> interrupt-controller property in the i8259 node, at which point it'll be
> trying to use the raw PCI IRQ pin number as an i8259 IRQ. This is
> Unlikely To Work(tm).
It will work in the specific 8259 case I suppose since it gets the
legacy 1:1 mapping... but it sucks :-)
Ben.
More information about the Linuxppc-dev
mailing list