Re: [PATCH] arm64: dts: marvell: armada-37xx: Remap IO space to bus address 0x0

From: Pali Rohár
Date: Tue Mar 01 2022 - 04:25:50 EST


On Monday 28 February 2022 17:42:03 Gregory CLEMENT wrote:
> > Hello Pali,
> >
> >> Remap PCI I/O space to the bus address 0x0 in the Armada 37xx
> >> device-tree in order to support legacy I/O port based cards which have
> >> hardcoded I/O ports in low address space.
> >>
> >> Some legacy PCI I/O based cards do not support 32-bit I/O addressing.
> >>
> >> Since commit 64f160e19e92 ("PCI: aardvark: Configure PCIe resources from
> >> 'ranges' DT property") this driver can work with I/O windows which
> >> have
> >
> > Should we add a "Fixes: 64f160e19e92 ("PCI: aardvark: Configure PCIe
> > resources from 'ranges' DT property")" tag ?
>
> Waiting for your confirmation I tried to applied it but it failed.
>
> Did you base this patch on v5.17-rc1 ?
>
> Gregory

Hello! This change is breaking booting of Turris Mox kernel with older
bootloader due to bugs in bootloader. So it is not possible to remap
PCI I/O space for turris-mox.dts file. I will send a new version of this
patch just for 37xx.dtsi file and add a comment into turris-mox.dts file
it is not possible here.

> >
> > Gregory
> >
> >> a different address for CPU than for PCI bus (unless there is some
> >> conflict with other A37xx mapping), without needing additional support
> >> for this in the firmware.
> >>
> >> Note that DDR on A37xx is mapped to bus address 0x0 and that mapping of
> >> I/O space can be set to address 0x0 too because MEM space and I/O space
> >> are separate and so they do not conflict.
> >>
> >> Signed-off-by: Pali Rohár <pali@xxxxxxxxxx>
> >> Reported-by: Arnd Bergmann <arnd@xxxxxxxx>
> >> ---
> >> arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts | 2 +-
> >> arch/arm64/boot/dts/marvell/armada-37xx.dtsi | 2 +-
> >> 2 files changed, 2 insertions(+), 2 deletions(-)
> >>
> >> diff --git a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
> >> index 6581092c2c90..7d1b9153a901 100644
> >> --- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
> >> +++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
> >> @@ -163,7 +163,7 @@
> >> */
> >> #address-cells = <3>;
> >> #size-cells = <2>;
> >> - ranges = <0x81000000 0 0xe8000000 0 0xe8000000 0 0x01000000 /* Port 0 IO */
> >> + ranges = <0x81000000 0 0x00000000 0 0xe8000000 0 0x01000000 /* Port 0 IO */
> >> 0x82000000 0 0xe9000000 0 0xe9000000 0 0x07000000>; /* Port 0 MEM */
> >>
> >> /* enabled by U-Boot if PCIe module is present */
> >> diff --git a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> >> index 549c3f7c5b27..a099b7787429 100644
> >> --- a/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> >> +++ b/arch/arm64/boot/dts/marvell/armada-37xx.dtsi
> >> @@ -515,7 +515,7 @@
> >> * (totaling 127 MiB) for MEM.
> >> */
> >> ranges = <0x82000000 0 0xe8000000 0 0xe8000000 0 0x07f00000 /* Port 0 MEM */
> >> - 0x81000000 0 0xeff00000 0 0xeff00000 0 0x00100000>; /* Port 0 IO*/
> >> + 0x81000000 0 0x00000000 0 0xeff00000 0 0x00100000>; /* Port 0 IO */
> >> interrupt-map-mask = <0 0 0 7>;
> >> interrupt-map = <0 0 0 1 &pcie_intc 0>,
> >> <0 0 0 2 &pcie_intc 1>,
> >> --
> >> 2.20.1
> >>
> >
> > --
> > Gregory Clement, Bootlin
> > Embedded Linux and Kernel engineering
> > http://bootlin.com
> >
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
> --
> Gregory Clement, Bootlin
> Embedded Linux and Kernel engineering
> http://bootlin.com