Re: SiFive FU740 PCI driver fails on 6.18-rc1
From: Ron Economos
Date: Tue Oct 14 2025 - 18:41:43 EST
On 10/14/25 09:25, Manivannan Sadhasivam wrote:
On Mon, Oct 13, 2025 at 10:52:48PM -0700, Ron Economos wrote:After testing with this patch, I must have transferred the wrong image to the target when testing before. The "pci->pp.native_ecam = true;" patch to pcie-fu740.c does work. Here's the message with the debug prints:
On 10/13/25 22:36, Krishna Chaitanya Chundru wrote:Weird that the driver still creates ECAM even after skipping it using the flag.
[ 3.159763] fu740-pcie e00000000.pcie: host bridge /soc/pcie@e00000000
On 10/14/2025 10:56 AM, Ron Economos wrote:
On 10/13/25 22:20, Krishna Chaitanya Chundru wrote:Can you share us dmesg logs for this change.
I've already tried it. It doesn't work. Same error message as before.
On 10/14/2025 2:58 AM, Bjorn Helgaas wrote:
[+cc FU740 driver folks, Conor, regressions]Hi Conor,
On Mon, Oct 13, 2025 at 12:14:54AM -0700, Ron Economos wrote:
The SiFive FU740 PCI driver fails on the HiFiveAs Conor pointed out, we can't fix a code regression with a DT change.
Unmatched board with Linux
6.18-rc1. The error message is:
[ 3.166624] fu740-pcie e00000000.pcie: host bridge
/soc/pcie@e00000000
ranges:
[ 3.166706] fu740-pcie e00000000.pcie: IO
0x0060080000..0x006008ffff -> 0x0060080000
[ 3.166767] fu740-pcie e00000000.pcie: MEM
0x0060090000..0x007fffffff -> 0x0060090000
[ 3.166805] fu740-pcie e00000000.pcie: MEM
0x2000000000..0x3fffffffff -> 0x2000000000
[ 3.166950] fu740-pcie e00000000.pcie: ECAM at [mem
0xdf0000000-0xdffffffff] for [bus 00-ff]
[ 3.579500] fu740-pcie e00000000.pcie: No iATU regions found
[ 3.579552] fu740-pcie e00000000.pcie: Failed to
configure iATU in ECAM
mode
[ 3.579655] fu740-pcie e00000000.pcie: probe with
driver fu740-pcie
failed with error -22
The normal message (on Linux 6.17.2) is:
[ 3.381487] fu740-pcie e00000000.pcie: host bridge
/soc/pcie@e00000000
ranges:
[ 3.381584] fu740-pcie e00000000.pcie: IO
0x0060080000..0x006008ffff -> 0x0060080000
[ 3.381682] fu740-pcie e00000000.pcie: MEM
0x0060090000..0x007fffffff -> 0x0060090000
[ 3.381724] fu740-pcie e00000000.pcie: MEM
0x2000000000..0x3fffffffff -> 0x2000000000
[ 3.484809] fu740-pcie e00000000.pcie: iATU: unroll
T, 8 ob, 8 ib, align
4K, limit 4096G
[ 3.683678] fu740-pcie e00000000.pcie: PCIe Gen.1 x8 link up
[ 3.883674] fu740-pcie e00000000.pcie: PCIe Gen.3 x8 link up
[ 3.987678] fu740-pcie e00000000.pcie: PCIe Gen.3 x8 link up
[ 3.988164] fu740-pcie e00000000.pcie: PCI host
bridge to bus 0000:00
Reverting the following commits solves the issue.
0da48c5b2fa731b21bc523c82d927399a1e508b0 PCI: dwc:
Support ECAM mechanism by
enabling iATU 'CFG Shift Feature'
4660e50cf81800f82eeecf743ad1e3e97ab72190 PCI: qcom:
Prepare for the DWC ECAM
enablement
f6fd357f7afbeb34a633e5688a23b9d7eb49d558 PCI: dwc:
Prepare the driver for
enabling ECAM mechanism using iATU 'CFG Shift Feature'
#regzbot introduced: f6fd357f7afb ("PCI: dwc: Prepare the
driver for enabling ECAM mechanism using iATU 'CFG Shift
Feature'")
Can you try with this patch and see if it is fixing the issue.
diff --git a/drivers/pci/controller/dwc/pcie-fu740.c
b/drivers/pci/controller/dwc/pcie-fu740.c
index 66367252032b..b5e0f016a580 100644
--- a/drivers/pci/controller/dwc/pcie-fu740.c
+++ b/drivers/pci/controller/dwc/pcie-fu740.c
@@ -328,6 +328,8 @@ static int fu740_pcie_probe(struct
platform_device *pdev)
platform_set_drvdata(pdev, afp);
+ pci->pp.native_ecam = true;
+
return dw_pcie_host_init(&pci->pp);
}
- Krishna Chaitanya.
- Krishna Chaitanya.
ranges:
[ 3.159853] fu740-pcie e00000000.pcie: IO
0x0060080000..0x006008ffff -> 0x0060080000
[ 3.159916] fu740-pcie e00000000.pcie: MEM
0x0060090000..0x007fffffff -> 0x0060090000
[ 3.159953] fu740-pcie e00000000.pcie: MEM
0x2000000000..0x3fffffffff -> 0x2000000000
[ 3.160039] fu740-pcie e00000000.pcie: ECAM at [mem
0xdf0000000-0xdffffffff] for [bus 00-ff]
[ 3.571421] fu740-pcie e00000000.pcie: No iATU regions found
[ 3.571472] fu740-pcie e00000000.pcie: Failed to configure iATU in ECAM
mode
[ 3.571529] fu740-pcie e00000000.pcie: probe with driver fu740-pcie
failed with error -22
Same as before the change. The entire log is here:
https://www.w6rz.net/dmesg.txt
The flag is not meant for that purpose, but it should've worked anyway.
Can you try this diff and share the dmesg log?
diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
index 20c9333bcb1c..58080928df9f 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -523,8 +523,12 @@ static int dw_pcie_host_get_resources(struct dw_pcie_rp *pp)
pp->cfg0_size = resource_size(res);
pp->cfg0_base = res->start;
+ dev_info(dev, "%s: %d native_ecam: %d", __func__, __LINE__,
+pp->native_ecam);
+
pp->ecam_enabled = dw_pcie_ecam_enabled(pp, res);
if (pp->ecam_enabled) {
+ dev_info(dev, "%s: %d ECAM ENABLED", __func__, __LINE__);
ret = dw_pcie_create_ecam_window(pp, res);
if (ret)
return ret;
@@ -533,6 +537,7 @@ static int dw_pcie_host_get_resources(struct dw_pcie_rp *pp)
pp->bridge->sysdata = pp->cfg;
pp->cfg->priv = pp;
} else {
+ dev_info(dev, "%s: %d ECAM DISABLED", __func__, __LINE__);
pp->va_cfg0_base = devm_pci_remap_cfg_resource(dev, res);
if (IS_ERR(pp->va_cfg0_base))
return PTR_ERR(pp->va_cfg0_base);
- Mani
[ 3.227746] fu740-pcie e00000000.pcie: host bridge /soc/pcie@e00000000 ranges:
[ 3.227833] fu740-pcie e00000000.pcie: IO 0x0060080000..0x006008ffff -> 0x0060080000
[ 3.227896] fu740-pcie e00000000.pcie: MEM 0x0060090000..0x007fffffff -> 0x0060090000
[ 3.227934] fu740-pcie e00000000.pcie: MEM 0x2000000000..0x3fffffffff -> 0x2000000000
[ 3.227993] fu740-pcie e00000000.pcie: dw_pcie_host_get_resources: 526 native_ecam: 1
[ 3.228019] fu740-pcie e00000000.pcie: dw_pcie_host_get_resources: 539 ECAM DISABLED
[ 3.331449] fu740-pcie e00000000.pcie: iATU: unroll T, 8 ob, 8 ib, align 4K, limit 4096G
[ 3.531131] fu740-pcie e00000000.pcie: PCIe Gen.1 x8 link up
[ 3.731132] fu740-pcie e00000000.pcie: PCIe Gen.3 x8 link up
[ 3.835131] fu740-pcie e00000000.pcie: PCIe Gen.3 x8 link up
[ 3.835465] fu740-pcie e00000000.pcie: PCI host bridge to bus 0000:00