PCIe on Armada 388 broken since 5.9
Hi,
It appears that PCIe on Armada 388 has been broken in 5.9. Here are the boot messages:
mvebu-pcie soc:pcie: host bridge /soc/pcie ranges:
mvebu-pcie soc:pcie: MEM 0x00f1080000..0x00f1081fff -> 0x0000080000 mvebu-pcie soc:pcie: MEM 0x00f1040000..0x00f1041fff -> 0x0000040000 mvebu-pcie soc:pcie: MEM 0x00f1044000..0x00f1045fff -> 0x0000044000 mvebu-pcie soc:pcie: MEM 0x00f1048000..0x00f1049fff -> 0x0000048000 mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe -> 0x0100000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe -> 0x0100000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe -> 0x0200000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe -> 0x0200000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe -> 0x0300000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe -> 0x0300000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe -> 0x0400000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe -> 0x0400000000
mvebu-pcie soc:pcie: resource collision: [mem 0xf1080000-0xf1081fff] conflicts with pcie [mem 0xf1080000-0xf1081fff]
mvebu-pcie: probe of soc:pcie failed with error -16
This results in PCIe being entirely non-functional. At a guess, I'd say it's due to:
commit c322fa0b3fa948010a278794e60c45ec860e4a1e
Author: Rob Herring <[email protected]> Date: Fri May 22 17:48:19 2020 -0600
PCI: mvebu: Use struct pci_host_bridge.windows list directly
There's no need to create a temporary resource list and then splice it to struct pci_host_bridge.windows list. Just use pci_host_bridge.windows directly. The necessary clean-up is already handled by the PCI core.
Any suggestions?
Signature · 2 lines
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
Quoted 34 lines · Russell King - ARM Linux admin
Hi,
It appears that PCIe on Armada 388 has been broken in 5.9. Here are the boot messages:
mvebu-pcie soc:pcie: host bridge /soc/pcie ranges:
mvebu-pcie soc:pcie: MEM 0x00f1080000..0x00f1081fff -> 0x0000080000 mvebu-pcie soc:pcie: MEM 0x00f1040000..0x00f1041fff -> 0x0000040000 mvebu-pcie soc:pcie: MEM 0x00f1044000..0x00f1045fff -> 0x0000044000 mvebu-pcie soc:pcie: MEM 0x00f1048000..0x00f1049fff -> 0x0000048000 mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe -> 0x0100000000mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe ->
0x0100000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe ->0x0200000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe ->0x0200000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe ->0x0300000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe ->0x0300000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe ->0x0400000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe ->0x0400000000
mvebu-pcie soc:pcie: resource collision: [mem 0xf1080000-0xf1081fff] conflicts with pcie [mem 0xf1080000-0xf1081fff]
mvebu-pcie: probe of soc:pcie failed with error -16This results in PCIe being entirely non-functional. At a guess, I'd say it's due to:
commit
c322fa0b3fa948010a278794e60c45ec860e4a1eAuthor: Rob Herring <[email protected]> Date: Fri May 22 17:48:19 2020 -0600PCI: mvebu: Use struct pci_host_bridge.windows list directly
There's no need to create a temporary resource list and then splice it to struct pci_host_bridge.windows list. Just use pci_host_bridge.windows directly. The necessary clean-up is already handled by the PCI core.
Quoted 5 lines
Signed-off-by Rob Herring <[email protected]>Signed-off-by Lorenzo Pieralisi <[email protected]>Cc Thomas Petazzoni <[email protected]>Cc Jason Cooper <[email protected]>
Confirmed. Reverting this commit results in functioning PCIe.
Signature · 2 lines
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
Quoted 36 lines · Russell King - ARM Linux admin
Quoted 34 lines · Russell King - ARM Linux admin
Hi,
It appears that PCIe on Armada 388 has been broken in 5.9. Here are the boot messages:
mvebu-pcie soc:pcie: host bridge /soc/pcie ranges:
mvebu-pcie soc:pcie: MEM 0x00f1080000..0x00f1081fff -> 0x0000080000 mvebu-pcie soc:pcie: MEM 0x00f1040000..0x00f1041fff -> 0x0000040000 mvebu-pcie soc:pcie: MEM 0x00f1044000..0x00f1045fff -> 0x0000044000 mvebu-pcie soc:pcie: MEM 0x00f1048000..0x00f1049fff -> 0x0000048000 mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe -> 0x0100000000mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe ->
0x0100000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe ->0x0200000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe ->0x0200000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe ->0x0300000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe ->0x0300000000
mvebu-pcie soc:pcie: MEM 0xffffffffffffffff..0x00fffffffe ->0x0400000000
mvebu-pcie soc:pcie: IO 0xffffffffffffffff..0x00fffffffe ->0x0400000000
mvebu-pcie soc:pcie: resource collision: [mem 0xf1080000-0xf1081fff] conflicts with pcie [mem 0xf1080000-0xf1081fff]
mvebu-pcie: probe of soc:pcie failed with error -16This results in PCIe being entirely non-functional. At a guess, I'd say it's due to:
commit
c322fa0b3fa948010a278794e60c45ec860e4a1eAuthor: Rob Herring <[email protected]> Date: Fri May 22 17:48:19 2020 -0600PCI: mvebu: Use struct pci_host_bridge.windows list directly
There's no need to create a temporary resource list and then splice it to struct pci_host_bridge.windows list. Just use pci_host_bridge.windows directly. The necessary clean-up is already handled by the PCI core.
Quoted 7 lines
Quoted 5 lines
Signed-off-by Rob Herring <[email protected]>Signed-off-by Lorenzo Pieralisi <[email protected]>Cc Thomas Petazzoni <[email protected]>Cc Jason Cooper <[email protected]>Confirmed. Reverting this commit results in functioning PCIe.
Yes, but really it's broken by 2 commits. The other is 669cbc708122 ("PCI: Move DT resource setup into devm_pci_alloc_host_bridge()").
I just sent out a fix, please test.
Rob