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

Kuppuswamy Sathyanarayanan sathyanarayanan.kuppuswamy at linux.intel.com
Thu Mar 19 04:48:07 AEDT 2026


Hi Bjorn,

On 3/18/2026 10:22 AM, Bjorn Helgaas wrote:
> [+cc Sizhe]
> 
> On Wed, Mar 18, 2026 at 10:04:49AM -0700, Kuppuswamy Sathyanarayanan wrote:
>> 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 at intel.com>
>> Signed-off-by: Goudar Manjunath Ramanagouda <manjunath.ramanagouda.goudar at intel.com>
>> Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppuswamy at linux.intel.com>
> 
> I think this does the same as
> https://git.kernel.org/cgit/linux/kernel/git/pci/pci.git/commit/?id=d4d1ecff2c2d
> which is already queued for v7.1.

Thanks for the reference.

Since errors in the DPC path leads to port containment, I think it is best to
always log them for reference and debug purposes. So I think we don't need to
export aer_print_init() from the AER driver (which can ratelimit non-fatal DPC
error). Instead we can by default skip ratelimit for DPC errors by initializing
ratelimit_print[0] = 1.

.

> 
>> ---
>>  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
>>

-- 
Sathyanarayanan Kuppuswamy
Linux Kernel Developer



More information about the Linuxppc-dev mailing list