>> This is an interrupt controller (it has an "interrupt-controller" >> property, and it has no interrupt parent (there is no >> "interrupt-parent" >> property, for interrupt controllers you do not follow the "normal" >> tree >> parent), so it is the root interrupt controller and there is no loop. >> >> It seems from your description that the Linux code is using the tree >> parent as interrupt parent even for interrupt controller nodes. This >> is wrong behaviour. > > It shoudn't normally happen. The reason it -does- happen in fact is > that > the above node is also missing the #interrupt-cells property, which > cause the parent-lookup routine to skip it before it gets a chance to > see that there's an "interrupt-controller" property in there. > > I'm not sure whether linux behaviour is a bug or not since I believe we > are clearly in undefined-land as an interrupt controller should always > have a #interrupt-cells property.
That isn't required for legacy (pieces of) trees that don't go through an interrupt-map, actually (but strongly recommended of course) -- and I'm not sure how valid a tree that uses the imap recommended practice for only part of the tree is really ;-) Either way, the Linux code should use the explicit information (the lack of "interrupt-parent" in a node with "interrupt-controller") to determine whether a node is the root interrupt controller, instead of some implicit information. You can then more clearly do sanity checking on "#interrupt-cells" etc. Segher _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev