[PATCH v1] PCI/DPC: Fix AER error logging for DPC/EDR triggered events

Kuppuswamy Sathyanarayanan
2026-03-18T17:05:06Z

aer_print_error() skips printing if ratelimit_print[i] is not set.
In the native AER path, ratelimit_print is initialized by
add_error_device() during source device discovery, and is set to 1
for fatal errors to bypass rate limiting since fatal errors should
always be logged.

The DPC/EDR path uses the DPC-capable port as the error source and
reads its AER uncorrectable error status registers directly in
dpc_get_aer_uncorrect_severity(). Since it does not go through
add_error_device(), ratelimit_print[0] is left uninitialized and zero.
As a result, aer_print_error() silently drops all AER error messages
for DPC/EDR triggered events.

Set ratelimit_print[0] to 1 to bypass rate limiting and always print
AER logs for fatal errors.

Fixes: a57f2bfb4a58 ("PCI/AER: Ratelimit correctable and non-fatal error logging")
Co-developed-by: Goudar Manjunath Ramanagouda <manjunath.ramanagouda.goudar@intel.com>
Signed-off-by: Goudar Manjunath Ramanagouda <manjunath.ramanagouda.goudar@intel.com>
Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy@linux.intel.com>
---
drivers/pci/pcie/dpc.c | 1 +
1 file changed, 1 insertion(+)

diff --git a/drivers/pci/pcie/dpc.c b/drivers/pci/pcie/dpc.c
index fc18349614d7..7605ddd9f0ba 100644
--- a/drivers/pci/pcie/dpc.c
+++ b/drivers/pci/pcie/dpc.c
@@ -256,6 +256,7 @@ static int dpc_get_aer_uncorrect_severity(struct pci_dev *dev,

info->dev[0] = dev;
info->error_dev_num = 1;
+ info->ratelimit_print[0] = 1;

return 1;
}
--
2.43.0