SiFive FU740 PCI driver fails on 6.18-rc1

Ron Economos re at w6rz.net
Mon Oct 13 22:52:48 PDT 2025


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 at 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 at 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'
>>>>
>>>> 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 at e00000000 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




More information about the linux-riscv mailing list