The kernel supports three different PCI error recovery mechanisms: * AER per PCIe r7.0 sec 6.2 (drivers/pci/pcie/aer.c + err.c) * EEH on PowerPC (arch/powerpc/kernel/eeh_driver.c) * zPCI on s390 (arch/s390/pci/pci_event.c)
In theory, they should all follow Documentation/PCI/pci-error-recovery.rst to afford uniform behavior to drivers across platforms. In practice, there are deviations which this series seeks to reduce. One particular pain point is AER not allowing drivers to opt in to a Bus Reset on Non-Fatal Errors (patch [1/5]). EEH allows this and the "xe" graphics driver would like to take advantage of it on AER-capable platforms. Patches [2/5] to [4/5] address various other deviations, while patch [5/5] cleans up old gunk in code comments. I've gone through all drivers implementing pci_error_handlers to ascertain that no regressions are introduced by these changes. Nevertheless further reviewing and testing would be appreciated to raise the confidence. Thanks! Lukas Wunner (5): PCI/AER: Allow drivers to opt in to Bus Reset on Non-Fatal Errors PCI/ERR: Fix uevent on failure to recover PCI/ERR: Notify drivers on failure to recover PCI/ERR: Update device error_state already after reset PCI/ERR: Remove remnants of .link_reset() callback .../ethernet/qlogic/qlcnic/qlcnic_83xx_hw.c | 1 - .../net/ethernet/qlogic/qlcnic/qlcnic_main.c | 2 - drivers/net/ethernet/sfc/efx_common.c | 3 -- drivers/net/ethernet/sfc/falcon/efx.c | 3 -- drivers/net/ethernet/sfc/siena/efx_common.c | 3 -- drivers/pci/pcie/err.c | 40 ++++++++++++++----- drivers/scsi/lpfc/lpfc_init.c | 2 +- drivers/scsi/qla2xxx/qla_os.c | 5 --- 8 files changed, 32 insertions(+), 27 deletions(-) -- 2.47.2