Re: [PATCH v1] PCI: brcmstb: Fix regression regarding missing PCIe linkup

From: Cyril Brulebois
Date: Thu May 19 2022 - 03:11:43 EST


Bjorn Helgaas <helgaas@xxxxxxxxxx> (2022-05-18):
> Cyril, if you have a chance to test this and verify that it fixes the
> regression, we may still be able to squeeze this into v5.18.
>
> I can add the Reported-by and Tested-by tags myself.

That looks good to me (some details below), and if that's no trouble
please use those:

Reported-by: Cyril Brulebois <cyril@xxxxxxxxxxx>
Tested-by: Cyril Brulebois <cyril@xxxxxxxxxxx>

> Jim Quinlan <jim2101024@xxxxxxxxx> (2022-05-18):
> > Please do not accept this commit until someone with a CM4 has tested
> > this solution; I have only emulated the problem and fix on different
> > platform.

Applying this patch on top of v5.18-rc7-48-gf993aed406ea, testing with a
CM4 mounted on a Compute Module 4 IO Board, the boot is fine again.

With an empty PCIe slot:

root@rpi4-20220428:~# dmesg|grep -i pci
[ 0.158519] PCI: CLS 0 bytes, default 64
[ 3.374963] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 3.375959] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[ 3.375994] brcm-pcie fd500000.pcie: No bus range found for /scb/pcie@7d500000, using [bus 00-ff]
[ 3.376042] brcm-pcie fd500000.pcie: MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
[ 3.376096] brcm-pcie fd500000.pcie: IB MEM 0x0000000000..0x003fffffff -> 0x0400000000
[ 3.376837] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[ 3.376864] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 3.376886] pci_bus 0000:00: root bus resource [mem 0x600000000-0x603ffffff] (bus address [0xf8000000-0xfbffffff])
[ 3.376950] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
[ 3.377057] pci 0000:00:00.0: PME# supported from D0 D3hot
[ 3.379455] pci 0000:00:00.0: bridge configuration invalid ([bus 00-00]), reconfiguring
[ 3.698799] brcm-pcie fd500000.pcie: link down
[ 3.700816] pci_bus 0000:01: busn_res: [bus 01-ff] end is updated to 01
[ 3.700855] pci 0000:00:00.0: PCI bridge to [bus 01]
[ 3.701216] pcieport 0000:00:00.0: PME: Signaling with IRQ 51
[ 3.701621] pcieport 0000:00:00.0: AER: enabled with IRQ 51
[ 3.702134] pci_bus 0000:01: busn_res: [bus 01] is released
[ 3.702417] pci_bus 0000:00: busn_res: [bus 00-ff] is released

With a PCIe→quad-USB extension board, and keyboard + USB stick on it:

root@rpi4-20220428:~# dmesg|grep -i pci|grep -v input:
[ 0.157680] PCI: CLS 0 bytes, default 64
[ 3.374070] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[ 3.375080] brcm-pcie fd500000.pcie: host bridge /scb/pcie@7d500000 ranges:
[ 3.375116] brcm-pcie fd500000.pcie: No bus range found for /scb/pcie@7d500000, using [bus 00-ff]
[ 3.375166] brcm-pcie fd500000.pcie: MEM 0x0600000000..0x0603ffffff -> 0x00f8000000
[ 3.375211] brcm-pcie fd500000.pcie: IB MEM 0x0000000000..0x003fffffff -> 0x0400000000
[ 3.375946] brcm-pcie fd500000.pcie: PCI host bridge to bus 0000:00
[ 3.375972] pci_bus 0000:00: root bus resource [bus 00-ff]
[ 3.375993] pci_bus 0000:00: root bus resource [mem 0x600000000-0x603ffffff] (bus address [0xf8000000-0xfbffffff])
[ 3.376057] pci 0000:00:00.0: [14e4:2711] type 01 class 0x060400
[ 3.376164] pci 0000:00:00.0: PME# supported from D0 D3hot
[ 3.428109] brcm-pcie fd500000.pcie: link up, 5.0 GT/s PCIe x1 (SSC)
[ 3.428175] pci 0000:01:00.0: [1106:3483] type 00 class 0x0c0330
[ 3.428219] pci 0000:01:00.0: reg 0x10: [mem 0x00000000-0x00000fff 64bit]
[ 3.428346] pci 0000:01:00.0: PME# supported from D0 D3cold
[ 3.430673] pci 0000:00:00.0: BAR 14: assigned [mem 0x600000000-0x6000fffff]
[ 3.430706] pci 0000:01:00.0: BAR 0: assigned [mem 0x600000000-0x600000fff 64bit]
[ 3.430742] pci 0000:00:00.0: PCI bridge to [bus 01]
[ 3.430761] pci 0000:00:00.0: bridge window [mem 0x600000000-0x6000fffff]
[ 3.430976] pcieport 0000:00:00.0: enabling device (0000 -> 0002)
[ 3.431150] pcieport 0000:00:00.0: PME: Signaling with IRQ 51
[ 3.431552] pcieport 0000:00:00.0: AER: enabled with IRQ 51
[ 3.431765] pci 0000:01:00.0: enabling device (0000 -> 0002)

Both keyboard and storage on USB work fine.

> > commit 830aa6f29f07 ("PCI: brcmstb: Split brcm_pcie_setup() into two
> > funcs")
> >
> > as the first failing commit. This commit is a regression, but is
> > unrelated and was fixed by a subsequent commit in the original
> > patchset.

For completeness, since the original patchset was merged before
v5.17-rc1, I verified that the latest release from the linux-5.17.y
branch (i.e. v5.17.9) is also broken in the same way (not surprising
but I thought I'd check anyway):

[ 1.952374] Kernel panic - not syncing: Asynchronous SError Interrupt

Testing this patch on top of v5.17.9, it also fixes the boot there (with
or without the extension board on the PCIe slot), so it looks to me this
patch could get cc'ed to stable for inclusion into the linux-5.17.y
branch.


Please let me know if you need more testing/feedback.


Cheers,
--
Cyril Brulebois (kibi@xxxxxxxxxx) <https://debamax.com/>
D-I release manager -- Release team member -- Freelance Consultant

Attachment: signature.asc
Description: PGP signature