linux/drivers/pci/pcie
Lukas Wunner 79c168e2aa PCI/AER: Skip error recovery on false alarms
Alex is seeing a probe failure of the amdgpu driver after the Root Port
above an AMD Navi10 GPU has been reset.  The reset was performed to recover
from a Firmware First reported Fatal Error.

However all status registers in the Root Port's AER Extended Capability are
blank, so apparently the platform firmware raised a false alarm.

The issue is only occurring since commit eddba19b8b ("PCI/AER: Support
Advisory Non-Fatal Errors").  It looks like enabling Advisory Non-Fatal
Errors causes code paths to be exercised in platform firmware which were
never validated before.

Skip error recovery on false alarms, i.e. if no unmasked errors were
actually signaled.

Note that this will also skip recovery if both the Status and Mask
registers are "all ones", as would be the case for inaccessible devices.
However that seems justified because it would imply either a hot-unplug
event or a Surprise Down Error further up in the hierarchy.  Interfering
with recovery from that seems uncalled for.

Fixes: eddba19b8b ("PCI/AER: Support Advisory Non-Fatal Errors")
Reported-by: Alex Deucher <alexander.deucher@amd.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=222095
Signed-off-by: Lukas Wunner <lukas@wunner.de>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Tested-by: Alex Deucher <alexander.deucher@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Link: https://patch.msgid.link/0552ed277e40a288e0157af799257ee6ec722534.1791460615.git.lukas@wunner.de
History 2026-10-08 14:33:04 -05:00
..
aer.c PCI/AER: Skip error recovery on false alarms 2026-10-08 14:33:04 -05:00
aer_cxl_rch.c PCI/AER: Use guard() in cxl_rch_handle_error_iter() 2026-01-22 15:07:04 -07:00
aer_inject.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
aspm.c PCI/ASPM: Mask ASPM states based on Devicetree properties 2026-08-12 14:26:55 -05:00
bwctrl.c PCI: Move pci_bus_speed2lnkctl2() to public header 2026-07-15 15:13:41 +02:00
dpc.c PCI/DPC: Log AER error info for DPC/EDR uncorrectable errors 2026-03-30 17:04:51 -05:00
edr.c PCI/EDR: Align EDR_PORT_LOCATE_DSM with PCI Firmware r3.3 2024-05-08 15:08:39 -05:00
err.c PCI: host-common: Add link down handling for Root Ports 2026-07-31 17:08:54 -05:00
Kconfig PCI/AER: Replace PCIEAER_CXL symbol with CXL_RAS 2026-01-22 15:06:54 -07:00
Makefile PCI/AER: Move CXL RCH error handling to aer_cxl_rch.c 2026-01-22 15:07:04 -07:00
pme.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
portdrv.c Merge branch 'pci/portdrv' 2026-08-21 16:40:36 -05:00
portdrv.h PCI/AER: Move CXL RCH error handling to aer_cxl_rch.c 2026-01-22 15:07:04 -07:00
ptm.c PCI: Use FIELD_MODIFY() instead of open-coding it 2026-05-05 11:48:13 -05:00
rcec.c Convert 'alloc_obj' family to use the new default GFP_KERNEL argument 2026-02-21 17:09:51 -08:00
tlp.c PCI/ERR: Add printk level to pcie_print_tlp_log() 2025-05-23 11:02:03 -05:00