Subject: Re: [PATCH] powerpc: document new interrupt-array property

From: David Gibson <[email-masked]>
Date: Tue, 27 Feb 2007 00:08:37 +1100

On Mon, Feb 26, 2007 at 06:36:29AM +0100, Segher Boessenkool wrote:
> >> On the other hand, I do quite like keeping with the old principle that
> >> having interrupts == having an "interrupts" node.
> >
> > That would be nice.  On the other hand, re-using interrupts means that
> > it's possible to get a silent misparse of the interrupt information:
> 
> Incorrect parsing of interrupt info tends to end up
> in spectacular crashes, not silent at all ;-)

Well, yes, but "sorry, I can't understand this device tree" or "huh?
I can't find the interrupts" would be preferable to spectacular
crashes.

> > a
> > parser which doesn't understand the new 'interrupt-parents' property
> > will encounter the node, see the 'interrupts' property, assume that
> > the interrupt parent is the physical parent and, if the
> > #interrupt-cells values match up, which is quite possible, assume that
> > it has correctly understood the interrupt information.
> 
> Something similar is true for *every* new binding; although
> indeed if you get a misparse the effects can be disastrous,
> with interrupts.  For other cases, the kernel would have to
> say "I don't understand this device" and give up on it, which
> can easily mean a failed boot; or silently assume something
> that is just a guess at best.
> 
> You cannot boot a client program that doesn't understand the
> device tree and expect it to understand the device tree ;-)

Obviously, but I'd like the client program to *know* that it doesn't
understand the device tree.

> > This is arguably a worse behaviour than simply having an old-style
> > parser see the lack of 'interrupts' property and assume the device has
> > no interrupts.
> 
> Until recently (well, not that recently) Linux couldn't
> parse the interrupt tree correctly and would royally
> mess up in unusual cases.  Does that mean that no device
> tree in the world should use the interrupt mapping binding?
> 
> Also, a device that has interrupts but no "interrupts"
> property is *just wrong*.  There are many more things
> that (can) look at the device tree than just the kernel,
> don't let your opinion be guided solely by what you
> think the kernel would do with a tree.

It's not specific to the kernel, the same reasoning applies to any
program using the device tree.  If something that's not aware of the
new property sees a node with an 'interrupts' but no
'interrupt-parent' property, it has *no reason* to believe there's
anything more to know.

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson