]> git.baikalelectronics.ru Git - kernel.git/commit
PCI: aardvark: Configure PCIe resources from 'ranges' DT property
authorPali Rohár <pali@kernel.org>
Thu, 24 Jun 2021 21:55:45 +0000 (23:55 +0200)
committerLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Fri, 20 Aug 2021 12:40:12 +0000 (13:40 +0100)
commit20d4809264b75bd3b0ddc24b2e29f9555b6b6eeb
tree520b5e8372441ae1e51ae52d8b2ad8dea83ace55
parent07d50dae80463c7693638b3fcbbc9d5bedec5835
PCI: aardvark: Configure PCIe resources from 'ranges' DT property

In commit c5766e06bf5b ("PCI: aardvark: Remove PCIe outbound window
configuration") was removed aardvark PCIe outbound window configuration and
commit description said that was recommended solution by HW designers.

But that commit completely removed support for configuring PCIe IO
resources without removing PCIe IO 'ranges' from DTS files. After that
commit PCIe IO space started to be treated as PCIe MEM space and accessing
it just caused kernel crash.

Moreover implementation of PCIe outbound windows prior that commit was
incorrect. It completely ignored offset between CPU address and PCIe bus
address and expected that in DTS is CPU address always same as PCIe bus
address without doing any checks. Also it completely ignored size of every
PCIe resource specified in 'ranges' DTS property and expected that every
PCIe resource has size 128 MB (also for PCIe IO range). Again without any
check. Apparently none of PCIe resource has in DTS specified size of 128
MB. So it was completely broken and thanks to how aardvark mask works,
configuration was completely ignored.

This patch reverts back support for PCIe outbound window configuration but
implementation is a new without issues mentioned above. PCIe outbound
window is required when DTS specify in 'ranges' property non-zero offset
between CPU and PCIe address space. To address recommendation by HW
designers as specified in commit description of c5766e06bf5b, set default
outbound parameters as PCIe MEM access without translation and therefore
for this PCIe 'ranges' it is not needed to configure PCIe outbound window.
For PCIe IO space is needed to configure aardvark PCIe outbound window.

This patch fixes kernel crash when trying to access PCIe IO space.

Link: https://lore.kernel.org/r/20210624215546.4015-2-pali@kernel.org
Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: stable@vger.kernel.org # c5766e06bf5b ("PCI: aardvark: Remove PCIe outbound window configuration")
drivers/pci/controller/pci-aardvark.c