[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <yxdwo4hppd7c7lrv5pybjtu22aqh3lbk34qxdxmkubgwukvgwq@i4i45fdgm6sw>
Date: Tue, 14 Oct 2025 21:55:51 +0530
From: Manivannan Sadhasivam <mani@...nel.org>
To: Ron Economos <re@...z.net>
Cc: Krishna Chaitanya Chundru <krishna.chundru@....qualcomm.com>,
Bjorn Helgaas <helgaas@...nel.org>, Conor Dooley <conor@...nel.org>, bhelgaas@...gle.com,
linux-pci@...r.kernel.org, linux-kernel@...r.kernel.org,
linux-riscv <linux-riscv@...ts.infradead.org>, Paul Walmsley <pjw@...nel.org>,
Greentime Hu <greentime.hu@...ive.com>, Samuel Holland <samuel.holland@...ive.com>,
regressions@...ts.linux.dev
Subject: Re: SiFive FU740 PCI driver fails on 6.18-rc1
On Mon, Oct 13, 2025 at 10:52:48PM -0700, Ron Economos wrote:
> On 10/13/25 22:36, Krishna Chaitanya Chundru wrote:
> >
> >
> > On 10/14/2025 10:56 AM, Ron Economos wrote:
> > > On 10/13/25 22:20, Krishna Chaitanya Chundru wrote:
> > > >
> > > >
> > > > On 10/14/2025 2:58 AM, Bjorn Helgaas wrote:
> > > > > [+cc FU740 driver folks, Conor, regressions]
> > > > >
> > > > > On Mon, Oct 13, 2025 at 12:14:54AM -0700, Ron Economos wrote:
> > > > > > The SiFive FU740 PCI driver fails on the HiFive
> > > > > > Unmatched board with Linux
> > > > > > 6.18-rc1. The error message is:
> > > > > >
> > > > > > [ 3.166624] fu740-pcie e00000000.pcie: host bridge
> > > > > > /soc/pcie@...000000
> > > > > > 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@...000000
> > > > > > 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'
> > > > >
> > > > > As Conor pointed out, we can't fix a code regression with a DT change.
> > > > >
> > > > > #regzbot introduced: f6fd357f7afb ("PCI: dwc: Prepare the
> > > > > driver for enabling ECAM mechanism using iATU 'CFG Shift
> > > > > Feature'")
> > > > Hi Conor,
> > > >
> > > > 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.
> > > >
> > > > >
> > > I've already tried it. It doesn't work. Same error message as before.
> > Can you share us dmesg logs for this change.
> >
> > - Krishna Chaitanya.
> > >
> [ 3.159763] fu740-pcie e00000000.pcie: host bridge /soc/pcie@...000000
> 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
>
Weird that the driver still creates ECAM even after skipping it using the flag.
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
--
மணிவண்ணன் சதாசிவம்
Powered by blists - more mailing lists