Message ID | 20140806165452.GN3711@ld-irv-0074 |
---|---|
State | Superseded, archived |
Headers | show |
On Wed, Aug 6, 2014 at 11:54 AM, Brian Norris <computersforpeace@gmail.com> wrote: > Hi Grant, et al, > > Can we get a comment here? > > On Thu, Jul 31, 2014 at 11:00:01AM -0700, Florian Fainelli wrote: >> 2014-06-19 16:33 GMT-07:00 Florian Fainelli <f.fainelli@gmail.com>: >> > In case the Device Tree blob passed by the boot agent supplies both an >> > 'interrupts-extended' and an 'interrupts' property in order to allow for >> > older kernels to be usable, prefer the new-style 'interrupts-extended' >> > property which convey a lot more information. >> > >> > This allows us to have bootloaders willingly maintaining backwards >> > compatibility with older kernels without entirely deprecating the >> > 'interrupts' property (although that is a clear violation of the binding >> > specified at >> > Documentation/devicetree/bindings/interrupt-controller/interrupts.txt) > > For the patch: > > Acked-by: Brian Norris <computersforpeace@gmail.com> > > 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? I would expect a new kernel and old dtb still works, right? That is the most important compatibility issue to consider. > How's that for DT stability? > > On the other hand, if we support this precedence concept, then a new DTB > can provide both the 'interrupts-extended' and 'interrupts' properties, > and thus be compatible with both pre-3.13 and > post-<whenever-this-is-accepted> kernels. Yes, this is what should be done. And I don't have any issue marking this for stable if needed. >> Any comments on this? Brian suggested that I update >> interrupt-controller/interrupts.txt to specify the look up ordering >> change as well. > > What do you think about the following DT binding doc update to accompany > this change? For both changes, Acked-by: Rob Herring <robh@kernel.org> Can you send a proper patch for the doc change or combine them. Rob > > Signed-off-by: Brian Norris <computersforpeace@gmail.com> > > diff --git a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt > index 1486497a24c1..ce6a1a072028 100644 > --- a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt > +++ b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt > @@ -4,11 +4,13 @@ Specifying interrupt information for devices > 1) Interrupt client nodes > ------------------------- > > -Nodes that describe devices which generate interrupts must contain an either an > -"interrupts" property or an "interrupts-extended" property. These properties > -contain a list of interrupt specifiers, one per output interrupt. The format of > -the interrupt specifier is determined by the interrupt controller to which the > -interrupts are routed; see section 2 below for details. > +Nodes that describe devices which generate interrupts must contain an > +"interrupts" property, an "interrupts-extended" property, or both. If both are > +present, the latter should take precedence; the former may be provided simply > +for compatibility with software that does not recognize the latter. These > +properties contain a list of interrupt specifiers, one per output interrupt. The > +format of the interrupt specifier is determined by the interrupt controller to > +which the interrupts are routed; see section 2 below for details. > > Example: > interrupt-parent = <&intc1>; -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
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@gmail.com> 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. > I would expect a new kernel > and old dtb still works, right? That is the most important > compatibility issue to consider. Yes, new kernels work with an old DTB. The problem we are considering is that old kernels don't work with new DTBs, unless you allow both interrupts and interrupts-extended in a new DTB. > > How's that for DT stability? > > > > On the other hand, if we support this precedence concept, then a new DTB > > can provide both the 'interrupts-extended' and 'interrupts' properties, > > and thus be compatible with both pre-3.13 and > > post-<whenever-this-is-accepted> kernels. > > Yes, this is what should be done. And I don't have any issue marking > this for stable if needed. Fine with me. We'll be porting it for our downstream kernels anyway. > >> Any comments on this? Brian suggested that I update > >> interrupt-controller/interrupts.txt to specify the look up ordering > >> change as well. > > > > What do you think about the following DT binding doc update to accompany > > this change? > > For both changes, > > Acked-by: Rob Herring <robh@kernel.org> > > Can you send a proper patch for the doc change or combine them. Florian just sent the combined version. Brian -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Aug 6, 2014 at 1:12 PM, Brian Norris <computersforpeace@gmail.com> 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@gmail.com> 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? I know interrupts-extended is preferred, but has interrupt-map support been removed from recent kernels? I'm a bit confused. -- Tim Bird Senior Software Engineer, Sony Mobile Architecture Group Chair, CE Workgroup, Linux Foundation -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 08/06/2014 02:50 PM, Tim Bird wrote: > On Wed, Aug 6, 2014 at 1:12 PM, Brian Norris > <computersforpeace@gmail.com> 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@gmail.com> 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. > > I know interrupts-extended is preferred, but has interrupt-map support been > removed from recent kernels? I'm a bit confused. 'interrupt-map' support has not been removed since that is heavily used to cross interrupt domains, e.g: PCI relies heavily on it, other buses as well most likely. > > -- Tim Bird > Senior Software Engineer, Sony Mobile > Architecture Group Chair, CE Workgroup, Linux Foundation > -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, Aug 6, 2014 at 4:50 PM, Tim Bird <tbird20d@gmail.com> wrote: > On Wed, Aug 6, 2014 at 1:12 PM, Brian Norris > <computersforpeace@gmail.com> 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@gmail.com> 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? It could have, but interrupts-extended is much more simple to express for the simple case of a device's interrupts routed to more than one parent. > I know interrupts-extended is preferred, but has interrupt-map support been > removed from recent kernels? I'm a bit confused. They are all still supported. It's just a question of order of parsing if you have find both styles. Rob -- To unsubscribe from this list: send the line "unsubscribe devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Wed, 06 Aug 2014 15:12:42 -0700, Florian Fainelli <f.fainelli@gmail.com> wrote: > On 08/06/2014 02:50 PM, Tim Bird wrote: > > On Wed, Aug 6, 2014 at 1:12 PM, Brian Norris > > <computersforpeace@gmail.com> 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@gmail.com> 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 devicetree" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt index 1486497a24c1..ce6a1a072028 100644 --- a/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt +++ b/Documentation/devicetree/bindings/interrupt-controller/interrupts.txt @@ -4,11 +4,13 @@ Specifying interrupt information for devices 1) Interrupt client nodes ------------------------- -Nodes that describe devices which generate interrupts must contain an either an -"interrupts" property or an "interrupts-extended" property. These properties -contain a list of interrupt specifiers, one per output interrupt. The format of -the interrupt specifier is determined by the interrupt controller to which the -interrupts are routed; see section 2 below for details. +Nodes that describe devices which generate interrupts must contain an +"interrupts" property, an "interrupts-extended" property, or both. If both are +present, the latter should take precedence; the former may be provided simply +for compatibility with software that does not recognize the latter. These +properties contain a list of interrupt specifiers, one per output interrupt. The +format of the interrupt specifier is determined by the interrupt controller to +which the interrupts are routed; see section 2 below for details. Example: interrupt-parent = <&intc1>;