2021-12-14 13:59:20

by Vladimir Oltean

[permalink] [raw]
Subject: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

This reverts commit 869f0ec048dc8fd88c0b2003373bd985795179fb. That
updated the expected device tree binding format for the ls-extirq
driver, without also updating the parsing code (ls_extirq_parse_map)
to the new format.

The context is that the ls-extirq driver uses the standard
"interrupt-map" OF property in a non-standard way, as suggested by
Rob Herring during review:
https://lore.kernel.org/lkml/20190927161118.GA19333@bogus/

This has turned out to be problematic, as Marc Zyngier discovered
through commit 041284181226 ("of/irq: Allow matching of an interrupt-map
local to an interrupt controller"), later fixed through commit
de4adddcbcc2 ("of/irq: Add a quirk for controllers with their own
definition of interrupt-map"). Marc's position, expressed on multiple
opportunities, is that:

(a) [ making private use of the reserved "interrupt-map" name in a
driver ] "is wrong, by the very letter of what an interrupt-map
means. If the interrupt map points to an interrupt controller,
that's the target for the interrupt."
https://lore.kernel.org/lkml/[email protected]/

(b) [ updating the driver's bindings to accept a non-reserved name for
this property, as an alternative, is ] "is totally pointless. These
machines have been in the wild for years, and existing DTs will be
there *forever*."
https://lore.kernel.org/lkml/[email protected]/

Considering the above, the Linux kernel has quirks in place to deal with
the ls-extirq's non-standard use of the "interrupt-map". These quirks
may be needed in other operating systems that consume this device tree,
yet this is seen as the only viable solution.

Therefore, the premise of the patch being reverted here is invalid.
It doesn't matter whether the driver, in its non-standard use of the
property, complies to the standard format or not, since this property
isn't expected to be used for interrupt translation by the core.

This change restores LS1088A, LS2088A/LS2085A and LX2160A to their
previous bindings, which allows these systems to continue to use
external interrupt lines with the correct polarity.

Fixes: 869f0ec048dc ("arm64: dts: freescale: Fix 'interrupt-map' parent address cells")
Signed-off-by: Vladimir Oltean <[email protected]>
---
v1->v2: remove the other 9 patches that rename "interrupt-map" to
"fsl,extirq-map", at Marc's suggestion.

.../arm64/boot/dts/freescale/fsl-ls1088a.dtsi | 24 +++++++++----------
.../arm64/boot/dts/freescale/fsl-ls208xa.dtsi | 24 +++++++++----------
.../arm64/boot/dts/freescale/fsl-lx2160a.dtsi | 24 +++++++++----------
3 files changed, 36 insertions(+), 36 deletions(-)

diff --git a/arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
index f891ef6a3754..605072317243 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls1088a.dtsi
@@ -241,18 +241,18 @@ extirq: interrupt-controller@14 {
interrupt-controller;
reg = <0x14 4>;
interrupt-map =
- <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
- <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
- <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
- <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
- <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
- <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
- <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
- <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
- <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
- <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
- <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
- <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+ <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+ <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+ <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+ <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+ <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+ <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+ <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+ <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+ <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+ <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+ <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+ <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
interrupt-map-mask = <0xffffffff 0x0>;
};
};
diff --git a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
index 3cb9c21d2775..1282b61da8a5 100644
--- a/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-ls208xa.dtsi
@@ -293,18 +293,18 @@ extirq: interrupt-controller@14 {
interrupt-controller;
reg = <0x14 4>;
interrupt-map =
- <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
- <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
- <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
- <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
- <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
- <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
- <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
- <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
- <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
- <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
- <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
- <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+ <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+ <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+ <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+ <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+ <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+ <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+ <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+ <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+ <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+ <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+ <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+ <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
interrupt-map-mask = <0xffffffff 0x0>;
};
};
diff --git a/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi b/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
index dc8661ebd1f6..c4b1a59ba424 100644
--- a/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
+++ b/arch/arm64/boot/dts/freescale/fsl-lx2160a.dtsi
@@ -680,18 +680,18 @@ extirq: interrupt-controller@14 {
interrupt-controller;
reg = <0x14 4>;
interrupt-map =
- <0 0 &gic 0 0 GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
- <1 0 &gic 0 0 GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
- <2 0 &gic 0 0 GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
- <3 0 &gic 0 0 GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
- <4 0 &gic 0 0 GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
- <5 0 &gic 0 0 GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
- <6 0 &gic 0 0 GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
- <7 0 &gic 0 0 GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
- <8 0 &gic 0 0 GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
- <9 0 &gic 0 0 GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
- <10 0 &gic 0 0 GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
- <11 0 &gic 0 0 GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+ <0 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+ <1 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
+ <2 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+ <3 0 &gic GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>,
+ <4 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>,
+ <5 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
+ <6 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+ <7 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+ <8 0 &gic GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>,
+ <9 0 &gic GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+ <10 0 &gic GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>,
+ <11 0 &gic GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
interrupt-map-mask = <0xffffffff 0x0>;
};
};
--
2.25.1



2021-12-31 18:13:59

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

Hello,

On Tue, Dec 14, 2021 at 03:58:52PM +0200, Vladimir Oltean wrote:
> This reverts commit 869f0ec048dc8fd88c0b2003373bd985795179fb. That
> updated the expected device tree binding format for the ls-extirq
> driver, without also updating the parsing code (ls_extirq_parse_map)
> to the new format.
>
> The context is that the ls-extirq driver uses the standard
> "interrupt-map" OF property in a non-standard way, as suggested by
> Rob Herring during review:
> https://lore.kernel.org/lkml/20190927161118.GA19333@bogus/
>
> This has turned out to be problematic, as Marc Zyngier discovered
> through commit 041284181226 ("of/irq: Allow matching of an interrupt-map
> local to an interrupt controller"), later fixed through commit
> de4adddcbcc2 ("of/irq: Add a quirk for controllers with their own
> definition of interrupt-map"). Marc's position, expressed on multiple
> opportunities, is that:
>
> (a) [ making private use of the reserved "interrupt-map" name in a
> driver ] "is wrong, by the very letter of what an interrupt-map
> means. If the interrupt map points to an interrupt controller,
> that's the target for the interrupt."
> https://lore.kernel.org/lkml/[email protected]/
>
> (b) [ updating the driver's bindings to accept a non-reserved name for
> this property, as an alternative, is ] "is totally pointless. These
> machines have been in the wild for years, and existing DTs will be
> there *forever*."
> https://lore.kernel.org/lkml/[email protected]/
>
> Considering the above, the Linux kernel has quirks in place to deal with
> the ls-extirq's non-standard use of the "interrupt-map". These quirks
> may be needed in other operating systems that consume this device tree,
> yet this is seen as the only viable solution.
>
> Therefore, the premise of the patch being reverted here is invalid.
> It doesn't matter whether the driver, in its non-standard use of the
> property, complies to the standard format or not, since this property
> isn't expected to be used for interrupt translation by the core.
>
> This change restores LS1088A, LS2088A/LS2085A and LX2160A to their
> previous bindings, which allows these systems to continue to use
> external interrupt lines with the correct polarity.
>
> Fixes: 869f0ec048dc ("arm64: dts: freescale: Fix 'interrupt-map' parent address cells")
> Signed-off-by: Vladimir Oltean <[email protected]>
> ---
> v1->v2: remove the other 9 patches that rename "interrupt-map" to
> "fsl,extirq-map", at Marc's suggestion.

Could this patch be considered for merging in v5.16? The problem is
going to be quite a bit more severe and tricky to fix otherwise. Thanks.

2022-01-02 13:08:37

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

On 2021-12-31 18:13, Vladimir Oltean wrote:
> Hello,
>
> On Tue, Dec 14, 2021 at 03:58:52PM +0200, Vladimir Oltean wrote:
>> This reverts commit 869f0ec048dc8fd88c0b2003373bd985795179fb. That
>> updated the expected device tree binding format for the ls-extirq
>> driver, without also updating the parsing code (ls_extirq_parse_map)
>> to the new format.
>>
>> The context is that the ls-extirq driver uses the standard
>> "interrupt-map" OF property in a non-standard way, as suggested by
>> Rob Herring during review:
>> https://lore.kernel.org/lkml/20190927161118.GA19333@bogus/
>>
>> This has turned out to be problematic, as Marc Zyngier discovered
>> through commit 041284181226 ("of/irq: Allow matching of an
>> interrupt-map
>> local to an interrupt controller"), later fixed through commit
>> de4adddcbcc2 ("of/irq: Add a quirk for controllers with their own
>> definition of interrupt-map"). Marc's position, expressed on multiple
>> opportunities, is that:
>>
>> (a) [ making private use of the reserved "interrupt-map" name in a
>> driver ] "is wrong, by the very letter of what an interrupt-map
>> means. If the interrupt map points to an interrupt controller,
>> that's the target for the interrupt."
>> https://lore.kernel.org/lkml/[email protected]/
>>
>> (b) [ updating the driver's bindings to accept a non-reserved name for
>> this property, as an alternative, is ] "is totally pointless.
>> These
>> machines have been in the wild for years, and existing DTs will be
>> there *forever*."
>> https://lore.kernel.org/lkml/[email protected]/
>>
>> Considering the above, the Linux kernel has quirks in place to deal
>> with
>> the ls-extirq's non-standard use of the "interrupt-map". These quirks
>> may be needed in other operating systems that consume this device
>> tree,
>> yet this is seen as the only viable solution.
>>
>> Therefore, the premise of the patch being reverted here is invalid.
>> It doesn't matter whether the driver, in its non-standard use of the
>> property, complies to the standard format or not, since this property
>> isn't expected to be used for interrupt translation by the core.
>>
>> This change restores LS1088A, LS2088A/LS2085A and LX2160A to their
>> previous bindings, which allows these systems to continue to use
>> external interrupt lines with the correct polarity.
>>
>> Fixes: 869f0ec048dc ("arm64: dts: freescale: Fix 'interrupt-map'
>> parent address cells")
>> Signed-off-by: Vladimir Oltean <[email protected]>
>> ---
>> v1->v2: remove the other 9 patches that rename "interrupt-map" to
>> "fsl,extirq-map", at Marc's suggestion.
>
> Could this patch be considered for merging in v5.16? The problem is
> going to be quite a bit more severe and tricky to fix otherwise.
> Thanks.

FWIW:

Acked-by: Marc Zyngier <[email protected]>

Rob, Shawn, can you please queue this as an urgent fix for 5.16?

Thanks,

M.
--
Jazz is not dead. It just smells funny...

2022-01-03 11:30:56

by Shawn Guo

[permalink] [raw]
Subject: Re: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

On Sun, Jan 02, 2022 at 01:08:28PM +0000, Marc Zyngier wrote:
> On 2021-12-31 18:13, Vladimir Oltean wrote:
> > Hello,
> >
> > On Tue, Dec 14, 2021 at 03:58:52PM +0200, Vladimir Oltean wrote:
> > > This reverts commit 869f0ec048dc8fd88c0b2003373bd985795179fb. That
> > > updated the expected device tree binding format for the ls-extirq
> > > driver, without also updating the parsing code (ls_extirq_parse_map)
> > > to the new format.
> > >
> > > The context is that the ls-extirq driver uses the standard
> > > "interrupt-map" OF property in a non-standard way, as suggested by
> > > Rob Herring during review:
> > > https://lore.kernel.org/lkml/20190927161118.GA19333@bogus/
> > >
> > > This has turned out to be problematic, as Marc Zyngier discovered
> > > through commit 041284181226 ("of/irq: Allow matching of an
> > > interrupt-map
> > > local to an interrupt controller"), later fixed through commit
> > > de4adddcbcc2 ("of/irq: Add a quirk for controllers with their own
> > > definition of interrupt-map"). Marc's position, expressed on multiple
> > > opportunities, is that:
> > >
> > > (a) [ making private use of the reserved "interrupt-map" name in a
> > > driver ] "is wrong, by the very letter of what an interrupt-map
> > > means. If the interrupt map points to an interrupt controller,
> > > that's the target for the interrupt."
> > > https://lore.kernel.org/lkml/[email protected]/
> > >
> > > (b) [ updating the driver's bindings to accept a non-reserved name for
> > > this property, as an alternative, is ] "is totally pointless.
> > > These
> > > machines have been in the wild for years, and existing DTs will be
> > > there *forever*."
> > > https://lore.kernel.org/lkml/[email protected]/
> > >
> > > Considering the above, the Linux kernel has quirks in place to deal
> > > with
> > > the ls-extirq's non-standard use of the "interrupt-map". These quirks
> > > may be needed in other operating systems that consume this device
> > > tree,
> > > yet this is seen as the only viable solution.
> > >
> > > Therefore, the premise of the patch being reverted here is invalid.
> > > It doesn't matter whether the driver, in its non-standard use of the
> > > property, complies to the standard format or not, since this property
> > > isn't expected to be used for interrupt translation by the core.
> > >
> > > This change restores LS1088A, LS2088A/LS2085A and LX2160A to their
> > > previous bindings, which allows these systems to continue to use
> > > external interrupt lines with the correct polarity.
> > >
> > > Fixes: 869f0ec048dc ("arm64: dts: freescale: Fix 'interrupt-map'
> > > parent address cells")
> > > Signed-off-by: Vladimir Oltean <[email protected]>
> > > ---
> > > v1->v2: remove the other 9 patches that rename "interrupt-map" to
> > > "fsl,extirq-map", at Marc's suggestion.
> >
> > Could this patch be considered for merging in v5.16? The problem is
> > going to be quite a bit more severe and tricky to fix otherwise. Thanks.
>
> FWIW:
>
> Acked-by: Marc Zyngier <[email protected]>
>
> Rob, Shawn, can you please queue this as an urgent fix for 5.16?

I would rather leave this to Rob, as I haven't heard anything from him
on this reverting (on his commit).

Shawn

2022-02-09 12:30:14

by Ioana Ciornei

[permalink] [raw]
Subject: Re: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

On Mon, Jan 03, 2022 at 07:30:44PM +0800, Shawn Guo wrote:
> On Sun, Jan 02, 2022 at 01:08:28PM +0000, Marc Zyngier wrote:
> > On 2021-12-31 18:13, Vladimir Oltean wrote:
> > > Hello,
> > >
> > > On Tue, Dec 14, 2021 at 03:58:52PM +0200, Vladimir Oltean wrote:
> > > > This reverts commit 869f0ec048dc8fd88c0b2003373bd985795179fb. That
> > > > updated the expected device tree binding format for the ls-extirq
> > > > driver, without also updating the parsing code (ls_extirq_parse_map)
> > > > to the new format.
> > > >
> > > > The context is that the ls-extirq driver uses the standard
> > > > "interrupt-map" OF property in a non-standard way, as suggested by
> > > > Rob Herring during review:
> > > > https://lore.kernel.org/lkml/20190927161118.GA19333@bogus/
> > > >
> > > > This has turned out to be problematic, as Marc Zyngier discovered
> > > > through commit 041284181226 ("of/irq: Allow matching of an
> > > > interrupt-map
> > > > local to an interrupt controller"), later fixed through commit
> > > > de4adddcbcc2 ("of/irq: Add a quirk for controllers with their own
> > > > definition of interrupt-map"). Marc's position, expressed on multiple
> > > > opportunities, is that:
> > > >
> > > > (a) [ making private use of the reserved "interrupt-map" name in a
> > > > driver ] "is wrong, by the very letter of what an interrupt-map
> > > > means. If the interrupt map points to an interrupt controller,
> > > > that's the target for the interrupt."
> > > > https://lore.kernel.org/lkml/[email protected]/
> > > >
> > > > (b) [ updating the driver's bindings to accept a non-reserved name for
> > > > this property, as an alternative, is ] "is totally pointless.
> > > > These
> > > > machines have been in the wild for years, and existing DTs will be
> > > > there *forever*."
> > > > https://lore.kernel.org/lkml/[email protected]/
> > > >
> > > > Considering the above, the Linux kernel has quirks in place to deal
> > > > with
> > > > the ls-extirq's non-standard use of the "interrupt-map". These quirks
> > > > may be needed in other operating systems that consume this device
> > > > tree,
> > > > yet this is seen as the only viable solution.
> > > >
> > > > Therefore, the premise of the patch being reverted here is invalid.
> > > > It doesn't matter whether the driver, in its non-standard use of the
> > > > property, complies to the standard format or not, since this property
> > > > isn't expected to be used for interrupt translation by the core.
> > > >
> > > > This change restores LS1088A, LS2088A/LS2085A and LX2160A to their
> > > > previous bindings, which allows these systems to continue to use
> > > > external interrupt lines with the correct polarity.
> > > >
> > > > Fixes: 869f0ec048dc ("arm64: dts: freescale: Fix 'interrupt-map'
> > > > parent address cells")
> > > > Signed-off-by: Vladimir Oltean <[email protected]>
> > > > ---
> > > > v1->v2: remove the other 9 patches that rename "interrupt-map" to
> > > > "fsl,extirq-map", at Marc's suggestion.
> > >
> > > Could this patch be considered for merging in v5.16? The problem is
> > > going to be quite a bit more severe and tricky to fix otherwise. Thanks.
> >
> > FWIW:
> >
> > Acked-by: Marc Zyngier <[email protected]>
> >
> > Rob, Shawn, can you please queue this as an urgent fix for 5.16?
>
> I would rather leave this to Rob, as I haven't heard anything from him
> on this reverting (on his commit).
>

Could this patch be queued up as a fix for v5.16 and v5.17?

Ioana


2022-03-11 22:46:35

by Vladimir Oltean

[permalink] [raw]
Subject: Re: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

Hello Rob,

On Wed, Feb 09, 2022 at 11:54:35AM +0000, Ioana Ciornei wrote:
> On Mon, Jan 03, 2022 at 07:30:44PM +0800, Shawn Guo wrote:
> > On Sun, Jan 02, 2022 at 01:08:28PM +0000, Marc Zyngier wrote:
> > > On 2021-12-31 18:13, Vladimir Oltean wrote:
> > > > Hello,
> > > >
> > > > On Tue, Dec 14, 2021 at 03:58:52PM +0200, Vladimir Oltean wrote:
> > > > > This reverts commit 869f0ec048dc8fd88c0b2003373bd985795179fb. That
> > > > > updated the expected device tree binding format for the ls-extirq
> > > > > driver, without also updating the parsing code (ls_extirq_parse_map)
> > > > > to the new format.
> > > > >
> > > > > The context is that the ls-extirq driver uses the standard
> > > > > "interrupt-map" OF property in a non-standard way, as suggested by
> > > > > Rob Herring during review:
> > > > > https://lore.kernel.org/lkml/20190927161118.GA19333@bogus/
> > > > >
> > > > > This has turned out to be problematic, as Marc Zyngier discovered
> > > > > through commit 041284181226 ("of/irq: Allow matching of an
> > > > > interrupt-map
> > > > > local to an interrupt controller"), later fixed through commit
> > > > > de4adddcbcc2 ("of/irq: Add a quirk for controllers with their own
> > > > > definition of interrupt-map"). Marc's position, expressed on multiple
> > > > > opportunities, is that:
> > > > >
> > > > > (a) [ making private use of the reserved "interrupt-map" name in a
> > > > > driver ] "is wrong, by the very letter of what an interrupt-map
> > > > > means. If the interrupt map points to an interrupt controller,
> > > > > that's the target for the interrupt."
> > > > > https://lore.kernel.org/lkml/[email protected]/
> > > > >
> > > > > (b) [ updating the driver's bindings to accept a non-reserved name for
> > > > > this property, as an alternative, is ] "is totally pointless.
> > > > > These
> > > > > machines have been in the wild for years, and existing DTs will be
> > > > > there *forever*."
> > > > > https://lore.kernel.org/lkml/[email protected]/
> > > > >
> > > > > Considering the above, the Linux kernel has quirks in place to deal
> > > > > with
> > > > > the ls-extirq's non-standard use of the "interrupt-map". These quirks
> > > > > may be needed in other operating systems that consume this device
> > > > > tree,
> > > > > yet this is seen as the only viable solution.
> > > > >
> > > > > Therefore, the premise of the patch being reverted here is invalid.
> > > > > It doesn't matter whether the driver, in its non-standard use of the
> > > > > property, complies to the standard format or not, since this property
> > > > > isn't expected to be used for interrupt translation by the core.
> > > > >
> > > > > This change restores LS1088A, LS2088A/LS2085A and LX2160A to their
> > > > > previous bindings, which allows these systems to continue to use
> > > > > external interrupt lines with the correct polarity.
> > > > >
> > > > > Fixes: 869f0ec048dc ("arm64: dts: freescale: Fix 'interrupt-map'
> > > > > parent address cells")
> > > > > Signed-off-by: Vladimir Oltean <[email protected]>
> > > > > ---
> > > > > v1->v2: remove the other 9 patches that rename "interrupt-map" to
> > > > > "fsl,extirq-map", at Marc's suggestion.
> > > >
> > > > Could this patch be considered for merging in v5.16? The problem is
> > > > going to be quite a bit more severe and tricky to fix otherwise. Thanks.
> > >
> > > FWIW:
> > >
> > > Acked-by: Marc Zyngier <[email protected]>
> > >
> > > Rob, Shawn, can you please queue this as an urgent fix for 5.16?
> >
> > I would rather leave this to Rob, as I haven't heard anything from him
> > on this reverting (on his commit).
> >
>
> Could this patch be queued up as a fix for v5.16 and v5.17?
>
> Ioana

This is a reminder that interrupts through the fsl-extirq driver are
still broken. Not to mention that we aren't even in the same release
cycle as the patch that introduced the breakage anymore, so broken
device trees (or "syntactically correct", depending on how you wish to
see it) have already started circulating. Do you have a better
suggestion to fix this?

2022-03-15 09:11:45

by Marc Zyngier

[permalink] [raw]
Subject: Re: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

On Mon, 14 Mar 2022 15:15:15 +0000,
Rob Herring <[email protected]> wrote:
>
> On Tue, Dec 14, 2021 at 6:59 AM Vladimir Oltean <[email protected]> wrote:
> > Therefore, the premise of the patch being reverted here is invalid.
> > It doesn't matter whether the driver, in its non-standard use of the
> > property, complies to the standard format or not, since this property
> > isn't expected to be used for interrupt translation by the core.
>
> I disagree. The non-standard part is that 'interrupt-map' translation
> is not transparent. 'interrupt-map' that can't be parsed in the
> standard way is just wrong, and I imagine was never the intention
> here. We simply cannot have platforms defining their own format for
> standard properties.

That ship sailed a long while ago. We have a list of offenders, and we
can make sure we don't get additional ones.

> Reverting this will cause dtc warnings now (IIRC) and just kicks the
> can down the road. Reverting is fine for now (I gave Arnd the okay on
> IRC), but I think the parsing will need to be updated to honor
> #address-cells and detect an old DT (probably by looking at the total
> size of 'interrupt-map') and mark that change for stable. That would
> only leave a new dt with an old kernel without stable updates broken.
> Seems unlikely a device is getting firmware updates, but not OS
> updates.

Being able to rollback firmware and OS independently is important. The
tooling can be taught about the broken instances, which should be
enough. Adding to the parsing only makes things harder to maintain,
for no real gain.

M.

--
Without deviation from the norm, progress is not possible.

2022-03-15 11:50:52

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

On Tue, Dec 14, 2021 at 6:59 AM Vladimir Oltean <[email protected]> wrote:
>
> This reverts commit 869f0ec048dc8fd88c0b2003373bd985795179fb. That
> updated the expected device tree binding format for the ls-extirq
> driver, without also updating the parsing code (ls_extirq_parse_map)
> to the new format.

Sorry, I missed this until mentioned on IRC.

>
> The context is that the ls-extirq driver uses the standard
> "interrupt-map" OF property in a non-standard way, as suggested by
> Rob Herring during review:
> https://lore.kernel.org/lkml/20190927161118.GA19333@bogus/
>
> This has turned out to be problematic, as Marc Zyngier discovered
> through commit 041284181226 ("of/irq: Allow matching of an interrupt-map
> local to an interrupt controller"), later fixed through commit
> de4adddcbcc2 ("of/irq: Add a quirk for controllers with their own
> definition of interrupt-map"). Marc's position, expressed on multiple
> opportunities, is that:
>
> (a) [ making private use of the reserved "interrupt-map" name in a
> driver ] "is wrong, by the very letter of what an interrupt-map
> means. If the interrupt map points to an interrupt controller,
> that's the target for the interrupt."
> https://lore.kernel.org/lkml/[email protected]/
>
> (b) [ updating the driver's bindings to accept a non-reserved name for
> this property, as an alternative, is ] "is totally pointless. These
> machines have been in the wild for years, and existing DTs will be
> there *forever*."
> https://lore.kernel.org/lkml/[email protected]/
>
> Considering the above, the Linux kernel has quirks in place to deal with
> the ls-extirq's non-standard use of the "interrupt-map". These quirks
> may be needed in other operating systems that consume this device tree,
> yet this is seen as the only viable solution.
>
> Therefore, the premise of the patch being reverted here is invalid.
> It doesn't matter whether the driver, in its non-standard use of the
> property, complies to the standard format or not, since this property
> isn't expected to be used for interrupt translation by the core.

I disagree. The non-standard part is that 'interrupt-map' translation
is not transparent. 'interrupt-map' that can't be parsed in the
standard way is just wrong, and I imagine was never the intention
here. We simply cannot have platforms defining their own format for
standard properties.

Reverting this will cause dtc warnings now (IIRC) and just kicks the
can down the road. Reverting is fine for now (I gave Arnd the okay on
IRC), but I think the parsing will need to be updated to honor
#address-cells and detect an old DT (probably by looking at the total
size of 'interrupt-map') and mark that change for stable. That would
only leave a new dt with an old kernel without stable updates broken.
Seems unlikely a device is getting firmware updates, but not OS
updates.

Rob

2022-03-17 06:31:18

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v2 devicetree] Revert "arm64: dts: freescale: Fix 'interrupt-map' parent address cells"

On Mon, Mar 14, 2022 at 9:34 AM Marc Zyngier <[email protected]> wrote:
>
> On Mon, 14 Mar 2022 15:15:15 +0000,
> Rob Herring <[email protected]> wrote:
> >
> > On Tue, Dec 14, 2021 at 6:59 AM Vladimir Oltean <[email protected]> wrote:
> > > Therefore, the premise of the patch being reverted here is invalid.
> > > It doesn't matter whether the driver, in its non-standard use of the
> > > property, complies to the standard format or not, since this property
> > > isn't expected to be used for interrupt translation by the core.
> >
> > I disagree. The non-standard part is that 'interrupt-map' translation
> > is not transparent. 'interrupt-map' that can't be parsed in the
> > standard way is just wrong, and I imagine was never the intention
> > here. We simply cannot have platforms defining their own format for
> > standard properties.
>
> That ship sailed a long while ago. We have a list of offenders, and we
> can make sure we don't get additional ones.
>
> > Reverting this will cause dtc warnings now (IIRC) and just kicks the
> > can down the road. Reverting is fine for now (I gave Arnd the okay on
> > IRC), but I think the parsing will need to be updated to honor
> > #address-cells and detect an old DT (probably by looking at the total
> > size of 'interrupt-map') and mark that change for stable. That would
> > only leave a new dt with an old kernel without stable updates broken.
> > Seems unlikely a device is getting firmware updates, but not OS
> > updates.
>
> Being able to rollback firmware and OS independently is important. The
> tooling can be taught about the broken instances, which should be
> enough. Adding to the parsing only makes things harder to maintain,
> for no real gain.

It's up to individual platforms to care about that. If they don't,
then compatibility has been broken multiple times most certainly
because in general there is 0 testing for it. Why make our lives more
complicated in those cases?

Rob