Re: [PATCH] of/irq: lookup 'interrupts-extended' property first

From: Grant Likely
Date: Fri Aug 15 2014 - 08:56:46 EST


On Wed, 06 Aug 2014 15:12:42 -0700, Florian Fainelli <f.fainelli@xxxxxxxxx> wrote:
> On 08/06/2014 02:50 PM, Tim Bird wrote:
> > On Wed, Aug 6, 2014 at 1:12 PM, Brian Norris
> > <computersforpeace@xxxxxxxxx> wrote:
> >> On Wed, Aug 06, 2014 at 01:42:08PM -0500, Rob Herring wrote:
> >>> On Wed, Aug 6, 2014 at 11:54 AM, Brian Norris <computersforpeace@xxxxxxxxx> wrote:
> >>>> On Thu, Jul 31, 2014 at 11:00:01AM -0700, Florian Fainelli wrote:
> >>>> I think it is important that a device tree provide some flexibility on
> >>>> kernel versions. We only invented 'interrupts-extended' in Linux 3.13,
> >>>> so it's easy to have device trees that could work only on 3.13+.
> >>>>
> >>>> Typically, we might say that new features require new kernels, but this
> >>>> is a very basic piece of the DT infrastructure. In our case, we have
> >>>> hardware whose basic features can be supported by a single interrupt
> >>>> parent, and so we used the 'interrupts' property pre-3.13. But when we
> >>>> want to add some power management features, there's an additional
> >>>> interrupt parent. Under the current DT binding, we have to switch over
> >>>> to using 'interrupts-extended' exclusively, and thus we must have a
> >>>> completely new DTB for >=3.13, and this DTB no longer works with the old
> >>>> kernels.
> >>>
> >>> "Must have" to enable the new features?
> >>
> >> Yes. The new feature requires an additional interrupt parent, and so it
> >> requires interrupts-extended.
> >
> > Hold on there. What about interrupt-map? That was the traditional DT
> > feature for
> > supporting multi-parented interrupts. Why couldn't the feature have been added
> > using that instead of interrupts-extended?
>
> As far as I read it from the ePAPR specification, you have a good point
> here, it looks like 'interrupt-map' could have been used as-is instead
> of 'interrupts-extended'. In fact it is a little more general than
> 'interrupts-extended' since it allows any sort of "child unit address",
> whether that is an actual interrupt number, or something else, is
> dependent on the type of node being used.

Not really any more general. The child unit address is for filtering
which nodes get a particular map entry. That doesn't have any value when
the routing information is directly in the device node, which is what
interrupts-extended does.

interrupt-map certainly still works, but it is quite fiddly to use when
the use case is merely one device wired to multiple interrupt
controllers, and it is very easy to get wrong. interrupts-extended is
far more concise.

g.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/