All of lore.kernel.org
 help / color / mirror / Atom feed
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

  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: link
Be 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.