On Friday 06 May 2022 15:40:23 Pali Rohár wrote:
> mvebu PCIe PME and AER interrupts are reported via PCIe summary
> interrupt. PCIe summary interrupt is reported via mvebu MPIC SoC error
> summary interrupt. And MPIC SoC error summary interrupt is reported via
> MPIC IRQ 4.
>
> This patch series implements support for interrupts in MPIC SoC error
> hierarchy in irq-armada-370-xp.c driver and support for interrupts in
> mvebu PCIe hierarchy in pci-mvebu.c.
>
> Finally PCIe PME and AER interrupts are routed to the correct PCIe Root
> Port, which allows kernel PME and AER drivers to take care of them.
>
> Tested on A385 board and kernel PME and AER drivers works correctly:
>
> [ 0.898482] pcieport 0000:00:01.0: PME: Signaling with IRQ 61
> [ 0.904422] pcieport 0000:00:01.0: AER: enabled with IRQ 61
> [ 0.910113] pcieport 0000:00:02.0: enabling device (0140 -> 0142)
> [ 0.916299] pcieport 0000:00:02.0: PME: Signaling with IRQ 62
> [ 0.922216] pcieport 0000:00:02.0: AER: enabled with IRQ 62
> [ 0.927917] pcieport 0000:00:03.0: enabling device (0140 -> 0142)
> [ 0.934090] pcieport 0000:00:03.0: PME: Signaling with IRQ 63
> [ 0.940006] pcieport 0000:00:03.0: AER: enabled with IRQ 63
>
> This change finally allows to debug PCIe issues on A385 boards.
FYI I tested that AER errors are now really handled by kernel AER driver:
[ 2733.258661] pcieport 0000:00:02.0: AER: Multiple Uncorrected (Non-Fatal) error received: 0000:02:00.0
[ 2733.258661] pcieport 0000:00:01.0: AER: Multiple Corrected error received: 0000:01:00.0
[ 2733.258682] pcieport 0000:00:01.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID)
[ 2733.267932] ath10k_pci 0000:02:00.0: PCIe Bus Error: severity=Uncorrected (Non-Fatal), type=Transaction Layer, (Requester ID)
[ 2733.275956] pcieport 0000:00:01.0: device [11ab:6820] error status/mask=00000001/00002000
[ 2733.285547] ath10k_pci 0000:02:00.0: device [168c:003c] error status/mask=00100000/00000000
[ 2733.296876] pcieport 0000:00:01.0: [ 0] RxErr (First)
[ 2733.305245] ath10k_pci 0000:02:00.0: [20] UnsupReq (First)
[ 2733.305251] ath10k_pci 0000:02:00.0: AER: TLP Header: 30000000 02080030 00000000 00000000
[ 2733.305282] ath10k_pci 0000:02:00.0: AER: can't recover (no error_detected callback)
[ 2733.313816] nvme 0000:01:00.0: PCIe Bus Error: severity=Corrected, type=Physical Layer, (Transmitter ID)
[ 2733.320671] pcieport 0000:00:02.0: AER: device recovery failed
[ 2733.327609] nvme 0000:01:00.0: device [1e0f:0001] error status/mask=00001041/00002000
[ 2733.367127] nvme 0000:01:00.0: [ 0] RxErr (First)
[ 2733.373591] nvme 0000:01:00.0: [ 6] BadTLP
[ 2733.379358] nvme 0000:01:00.0: [12] Timeout
[ 2733.385120] nvme 0000:01:00.0: AER: Error of this Agent is reported first
> Pali Rohár (6):
> dt-bindings: irqchip: armada-370-xp: Update information about MPIC SoC
> Error
> irqchip/armada-370-xp: Implement SoC Error interrupts
> ARM: dts: armada-38x.dtsi: Add node for MPIC SoC Error IRQ controller
> dt-bindings: PCI: mvebu: Update information about summary interrupt
> PCI: mvebu: Implement support for interrupts on emulated bridge
> ARM: dts: armada-385.dtsi: Add definitions for PCIe summary interrupts
>
> .../marvell,armada-370-xp-mpic.txt | 9 +
> .../devicetree/bindings/pci/mvebu-pci.txt | 1 +
> arch/arm/boot/dts/armada-385.dtsi | 20 +-
> arch/arm/boot/dts/armada-38x.dtsi | 5 +
> drivers/irqchip/irq-armada-370-xp.c | 213 +++++++++++++++++-
> drivers/pci/controller/pci-mvebu.c | 208 +++++++++++++++--
> 6 files changed, 426 insertions(+), 30 deletions(-)
>
> --
> 2.20.1
>