From: Vladimir Oltean <vladimir.oltean@nxp.com> To: Marc Zyngier <maz@kernel.org> Cc: "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, Rob Herring <robh+dt@kernel.org>, Shawn Guo <shawnguo@kernel.org>, Leo Li <leoyang.li@nxp.com>, Biwen Li <biwen.li@nxp.com>, "Z.Q. Hou" <zhiqiang.hou@nxp.com>, Kurt Kanzenbach <kurt@linutronix.de>, Rasmus Villemoes <linux@rasmusvillemoes.dk> Subject: Re: [RFC PATCH devicetree 00/10] Do something about ls-extirq interrupt-map breakage Date: Tue, 14 Dec 2021 09:58:54 +0000 [thread overview] Message-ID: <20211214095853.4emzycaxkuqr4tun@skbuf> (raw) In-Reply-To: <87ilvrk1r0.wl-maz@kernel.org> Hi Marc (with a c), On Tue, Dec 14, 2021 at 08:51:47AM +0000, Marc Zyngier wrote: > On Tue, 14 Dec 2021 01:37:50 +0000, > Vladimir Oltean <vladimir.oltean@nxp.com> wrote: > > > > Currently the ls-extirq driver's use of the "interrupt-map" property is > > double-broken: > > - once by Rob Herring's commit 869f0ec048dc ("arm64: dts: freescale: Fix > > 'interrupt-map' parent address cells") > > - twice by Marc Zyngier's commit 041284181226 ("of/irq: Allow matching > > of an interrupt-map local to an interrupt controller"), later revised, > > not very elegantly, through commit de4adddcbcc2 ("of/irq: Add a quirk > > Elegance is, I'm afraid to say, bloody overrated when dealing with > this sort of crap. > > > > for controllers with their own definition of interrupt-map"). So this > > part works but we're on an offender list. > > Define 'part works'. Either it does, or it doesn't. There is no middle > ground here. "Part" is the subject, "works" is the predicate. It is a part of a larger set of changes that now works after some breakage. > > > > Mark suggests that the problem may lie with the ls-extirq driver, and > > its interpretation of the "interrupt-map" property, to be exact. > > s/Mark/Marc/, unless you are talking about someone else (who?). Twas a typo, my hand must have slipped. This will not happen again. > > This set of changes attempts to make the problem smaller by using a > > vendor-specific name for the property, and reverts Rob's patch because > > similarity with "interrupt-map" isn't actually a desirable feature after > > all, it seems. > > > > Vladimir Oltean (10): > > irqchip/ls-extirq: rename "interrupt-map" OF property to > > "fsl,extirq-map" > > Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address > > cells" > > dt-bindings: ls-extirq: replace "interrupt-map" documentation with > > "fsl,extirq-map" > > arm64: dts: ls1043a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > arm64: dts: ls1046a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > arm64: dts: ls1088a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > arm64: dts: ls208xa: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > arm64: dts: lx2160a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > ARM: dts: ls1021a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > dt-bindings: ls-extirq: add a YAML schema for the validator > > > > .../interrupt-controller/fsl,ls-extirq.txt | 53 --------- > > .../interrupt-controller/fsl,ls-extirq.yaml | 110 ++++++++++++++++++ > > arch/arm/boot/dts/ls1021a.dtsi | 3 +- > > .../arm64/boot/dts/freescale/fsl-ls1043a.dtsi | 3 +- > > .../arm64/boot/dts/freescale/fsl-ls1046a.dtsi | 3 +- > > .../arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 27 +++-- > > .../arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 27 +++-- > > .../arm64/boot/dts/freescale/fsl-lx2160a.dtsi | 27 +++-- > > drivers/irqchip/irq-ls-extirq.c | 12 +- > > 9 files changed, 161 insertions(+), 104 deletions(-) > > delete mode 100644 Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.txt > > create mode 100644 Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > > This is totally pointless. These machines have been in the wild for > years, and existing DTs will be there *forever*. The very notion of > 'backporting' DT changes is totally ludicrous when it is some firmware > (ATF, u-boot, or something else *that isn't under your control*) that > provides the DT. It also breaks backward compatibility (old kernel > with new DT), which is just as important. Why do you think I went the > elegance-deprived route and added a quirk? I wish the firmware for these SoCs was smart enough to be compatible with the bindings that are in the kernel and provide a blob that the kernel could actually use. Some work has been started there and this is work in progress. True, I don't know what other OF-based firmware some other customers may use, but I trust it isn't a lot more advanced than what U-Boot currently has :) Also, the machines may have been in the wild for years, but the ls-extirq driver was added in November 2019. So not with the introduction of the SoC device trees themselves. That isn't so long ago. As for compatibility between old kernel and new DT: I guess you'll hear various opinions on this one. https://www.spinics.net/lists/linux-mips/msg07778.html | > Are we okay with the new device tree blobs breaking the old kernel? | | From my point of view, newer device trees are not required to work on | older kernel, this would impose an unreasonable limitation and the use | case is very limited. Sadly we're at a point where we cannot have software any longer that works with all device trees in circulation, after Rob's change, because the ls-extirq driver won't know what is the expected correct length of an "interrupt-map"/"fsl,extirq-map"/whatever-you-want-to-call-it specifier. And even with the revert, the argument you've brought to the table still holds: any kernel running on a device tree with Rob's change will stay broken no matter what we do. I'd like to take a more constructive approach and see what we can do going forward (in the direction of the arrow of time, in case that's not clear), at least. > So no, I'm not taking the irqchip changes, as most of this churn > serves no purpose. The revert of 869f0ec048dc is the only thing that > makes some sense. The devicetree changes were for Shawn to pick up anyway. But I posted the entire series as RFC to gather comments. Other opinions still welcome.
WARNING: multiple messages have this Message-ID (diff)
From: Vladimir Oltean <vladimir.oltean@nxp.com> To: Marc Zyngier <maz@kernel.org> Cc: "devicetree@vger.kernel.org" <devicetree@vger.kernel.org>, "linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>, "linux-arm-kernel@lists.infradead.org" <linux-arm-kernel@lists.infradead.org>, Rob Herring <robh+dt@kernel.org>, Shawn Guo <shawnguo@kernel.org>, Leo Li <leoyang.li@nxp.com>, Biwen Li <biwen.li@nxp.com>, "Z.Q. Hou" <zhiqiang.hou@nxp.com>, Kurt Kanzenbach <kurt@linutronix.de>, Rasmus Villemoes <linux@rasmusvillemoes.dk> Subject: Re: [RFC PATCH devicetree 00/10] Do something about ls-extirq interrupt-map breakage Date: Tue, 14 Dec 2021 09:58:54 +0000 [thread overview] Message-ID: <20211214095853.4emzycaxkuqr4tun@skbuf> (raw) In-Reply-To: <87ilvrk1r0.wl-maz@kernel.org> Hi Marc (with a c), On Tue, Dec 14, 2021 at 08:51:47AM +0000, Marc Zyngier wrote: > On Tue, 14 Dec 2021 01:37:50 +0000, > Vladimir Oltean <vladimir.oltean@nxp.com> wrote: > > > > Currently the ls-extirq driver's use of the "interrupt-map" property is > > double-broken: > > - once by Rob Herring's commit 869f0ec048dc ("arm64: dts: freescale: Fix > > 'interrupt-map' parent address cells") > > - twice by Marc Zyngier's commit 041284181226 ("of/irq: Allow matching > > of an interrupt-map local to an interrupt controller"), later revised, > > not very elegantly, through commit de4adddcbcc2 ("of/irq: Add a quirk > > Elegance is, I'm afraid to say, bloody overrated when dealing with > this sort of crap. > > > > for controllers with their own definition of interrupt-map"). So this > > part works but we're on an offender list. > > Define 'part works'. Either it does, or it doesn't. There is no middle > ground here. "Part" is the subject, "works" is the predicate. It is a part of a larger set of changes that now works after some breakage. > > > > Mark suggests that the problem may lie with the ls-extirq driver, and > > its interpretation of the "interrupt-map" property, to be exact. > > s/Mark/Marc/, unless you are talking about someone else (who?). Twas a typo, my hand must have slipped. This will not happen again. > > This set of changes attempts to make the problem smaller by using a > > vendor-specific name for the property, and reverts Rob's patch because > > similarity with "interrupt-map" isn't actually a desirable feature after > > all, it seems. > > > > Vladimir Oltean (10): > > irqchip/ls-extirq: rename "interrupt-map" OF property to > > "fsl,extirq-map" > > Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address > > cells" > > dt-bindings: ls-extirq: replace "interrupt-map" documentation with > > "fsl,extirq-map" > > arm64: dts: ls1043a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > arm64: dts: ls1046a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > arm64: dts: ls1088a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > arm64: dts: ls208xa: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > arm64: dts: lx2160a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > ARM: dts: ls1021a: rename the "interrupt-map" of the extirq node to > > "fsl,extirq-map" > > dt-bindings: ls-extirq: add a YAML schema for the validator > > > > .../interrupt-controller/fsl,ls-extirq.txt | 53 --------- > > .../interrupt-controller/fsl,ls-extirq.yaml | 110 ++++++++++++++++++ > > arch/arm/boot/dts/ls1021a.dtsi | 3 +- > > .../arm64/boot/dts/freescale/fsl-ls1043a.dtsi | 3 +- > > .../arm64/boot/dts/freescale/fsl-ls1046a.dtsi | 3 +- > > .../arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 27 +++-- > > .../arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 27 +++-- > > .../arm64/boot/dts/freescale/fsl-lx2160a.dtsi | 27 +++-- > > drivers/irqchip/irq-ls-extirq.c | 12 +- > > 9 files changed, 161 insertions(+), 104 deletions(-) > > delete mode 100644 Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.txt > > create mode 100644 Documentation/devicetree/bindings/interrupt-controller/fsl,ls-extirq.yaml > > This is totally pointless. These machines have been in the wild for > years, and existing DTs will be there *forever*. The very notion of > 'backporting' DT changes is totally ludicrous when it is some firmware > (ATF, u-boot, or something else *that isn't under your control*) that > provides the DT. It also breaks backward compatibility (old kernel > with new DT), which is just as important. Why do you think I went the > elegance-deprived route and added a quirk? I wish the firmware for these SoCs was smart enough to be compatible with the bindings that are in the kernel and provide a blob that the kernel could actually use. Some work has been started there and this is work in progress. True, I don't know what other OF-based firmware some other customers may use, but I trust it isn't a lot more advanced than what U-Boot currently has :) Also, the machines may have been in the wild for years, but the ls-extirq driver was added in November 2019. So not with the introduction of the SoC device trees themselves. That isn't so long ago. As for compatibility between old kernel and new DT: I guess you'll hear various opinions on this one. https://www.spinics.net/lists/linux-mips/msg07778.html | > Are we okay with the new device tree blobs breaking the old kernel? | | From my point of view, newer device trees are not required to work on | older kernel, this would impose an unreasonable limitation and the use | case is very limited. Sadly we're at a point where we cannot have software any longer that works with all device trees in circulation, after Rob's change, because the ls-extirq driver won't know what is the expected correct length of an "interrupt-map"/"fsl,extirq-map"/whatever-you-want-to-call-it specifier. And even with the revert, the argument you've brought to the table still holds: any kernel running on a device tree with Rob's change will stay broken no matter what we do. I'd like to take a more constructive approach and see what we can do going forward (in the direction of the arrow of time, in case that's not clear), at least. > So no, I'm not taking the irqchip changes, as most of this churn > serves no purpose. The revert of 869f0ec048dc is the only thing that > makes some sense. The devicetree changes were for Shawn to pick up anyway. But I posted the entire series as RFC to gather comments. Other opinions still welcome. _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-12-14 9:58 UTC|newest] Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-12-14 1:37 [RFC PATCH devicetree 00/10] Do something about ls-extirq interrupt-map breakage Vladimir Oltean 2021-12-14 1:37 ` Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 01/10] irqchip/ls-extirq: rename "interrupt-map" OF property to "fsl,extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 01/10] irqchip/ls-extirq: rename "interrupt-map" OF property to "fsl, extirq-map" Vladimir Oltean 2021-12-14 8:46 ` [RFC PATCH devicetree 01/10] irqchip/ls-extirq: rename "interrupt-map" OF property to "fsl,extirq-map" Kurt Kanzenbach 2021-12-14 8:46 ` Kurt Kanzenbach 2021-12-14 15:07 ` Rob Herring 2021-12-14 15:07 ` Rob Herring 2021-12-14 1:37 ` [RFC PATCH devicetree 02/10] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells" Vladimir Oltean 2021-12-14 1:37 ` Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 03/10] dt-bindings: ls-extirq: replace "interrupt-map" documentation with "fsl,extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 03/10] dt-bindings: ls-extirq: replace "interrupt-map" documentation with "fsl, extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 04/10] arm64: dts: ls1043a: rename the "interrupt-map" of the extirq node to "fsl,extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 04/10] arm64: dts: ls1043a: rename the "interrupt-map" of the extirq node to "fsl, extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 05/10] arm64: dts: ls1046a: rename the "interrupt-map" of the extirq node to "fsl,extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 05/10] arm64: dts: ls1046a: rename the "interrupt-map" of the extirq node to "fsl, extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 06/10] arm64: dts: ls1088a: rename the "interrupt-map" of the extirq node to "fsl,extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 06/10] arm64: dts: ls1088a: rename the "interrupt-map" of the extirq node to "fsl, extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 07/10] arm64: dts: ls208xa: rename the "interrupt-map" of the extirq node to "fsl,extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 07/10] arm64: dts: ls208xa: rename the "interrupt-map" of the extirq node to "fsl, extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 08/10] arm64: dts: lx2160a: rename the "interrupt-map" of the extirq node to "fsl,extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 08/10] arm64: dts: lx2160a: rename the "interrupt-map" of the extirq node to "fsl, extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 09/10] ARM: dts: ls1021a: rename the "interrupt-map" of the extirq node to "fsl,extirq-map" Vladimir Oltean 2021-12-14 1:37 ` [RFC PATCH devicetree 09/10] ARM: dts: ls1021a: rename the "interrupt-map" of the extirq node to "fsl, extirq-map" Vladimir Oltean 2021-12-14 1:38 ` [RFC PATCH devicetree 10/10] dt-bindings: ls-extirq: add a YAML schema for the validator Vladimir Oltean 2021-12-14 1:38 ` Vladimir Oltean 2021-12-14 15:21 ` Rob Herring 2021-12-14 15:21 ` Rob Herring 2021-12-14 8:51 ` [RFC PATCH devicetree 00/10] Do something about ls-extirq interrupt-map breakage Marc Zyngier 2021-12-14 8:51 ` Marc Zyngier 2021-12-14 9:58 ` Vladimir Oltean [this message] 2021-12-14 9:58 ` Vladimir Oltean 2021-12-14 10:20 ` Marc Zyngier 2021-12-14 10:20 ` Marc Zyngier 2021-12-14 10:30 ` Vladimir Oltean 2021-12-14 10:30 ` Vladimir Oltean 2021-12-14 10:39 ` Marc Zyngier 2021-12-14 10:39 ` Marc Zyngier 2021-12-14 10:53 ` Vladimir Oltean 2021-12-14 10:53 ` Vladimir Oltean 2021-12-14 11:11 ` Marc Zyngier 2021-12-14 11:11 ` Marc Zyngier 2022-03-24 17:10 ` Vladimir Oltean 2022-03-24 17:10 ` Vladimir Oltean 2022-03-24 17:21 ` Marc Zyngier 2022-03-24 17:21 ` Marc Zyngier 2022-03-24 17:34 ` Vladimir Oltean 2022-03-24 17:34 ` Vladimir Oltean 2022-03-24 18:06 ` Marc Zyngier 2022-03-24 18:06 ` Marc Zyngier 2022-03-24 19:09 ` Vladimir Oltean 2022-03-24 19:09 ` Vladimir Oltean 2022-03-24 20:14 ` Marc Zyngier 2022-03-24 20:14 ` Marc Zyngier 2022-03-25 10:34 ` Robin Murphy 2022-03-25 10:34 ` Robin Murphy 2022-03-25 17:54 ` Vladimir Oltean 2022-03-25 17:54 ` Vladimir Oltean
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211214095853.4emzycaxkuqr4tun@skbuf \ --to=vladimir.oltean@nxp.com \ --cc=biwen.li@nxp.com \ --cc=devicetree@vger.kernel.org \ --cc=kurt@linutronix.de \ --cc=leoyang.li@nxp.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@rasmusvillemoes.dk \ --cc=maz@kernel.org \ --cc=robh+dt@kernel.org \ --cc=shawnguo@kernel.org \ --cc=zhiqiang.hou@nxp.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.