On Thu, Feb 13, 2025 at 06:35:36PM -0800, Jon Pan-Doh wrote: > Info logged is duplicated when the source device is processed. In both > cases, BDF and error severity are derived from aer_error_info. If > no source device is found, then an error is logged with the BDF from > aer_error_info. Nit: say what the patch does in the commit log as well as in the subject. > Code flow: > aer_isr_one_error() > -> aer_print_port_info() > -> find_source_device() > -> return/pci_info() if no device found else continue > -> aer_process_err_devices() > -> aer_print_error() Nit: drop "->"; the indentation is enough. > aer_print_port_info(): > pcieport 0000:00:04.0: Correctable error message received > from 0000:01:00.0 Nit: don't wrap log messages, and indent them a couple space since they're quoted material. > aer_print_error(): > e1000e 0000:01:00.0: PCIe Bus Error: severity=Correctable, type=Data Link Layer, (Receiver ID) > e1000e 0000:01:00.0: device [8086:10d3] error status/mask=00000040/0000e000 > e1000e 0000:01:00.0: [ 6] BadTLP Give us a clear sample of the log showing the duplicated info. Are you're referring to this: pcieport 0000:00:04.0: Correctable error message received from 0000:01:00.0 e1000e 0000:01:00.0: PCIe Bus Error: severity=Correctable, type=Data Link Layer, (Receiver ID) e1000e 0000:01:00.0: device [8086:10d3] error status/mask=00000040/0000e000 e1000e 0000:01:00.0: [ 6] BadTLP where the pcieport message refers to 0000:01:00.0, and the subsequent e1000e messages also include 0000:01:00.0? It's true this is redundant information, but that e1000e device may no longer be accessible. In that case, I think aer_get_device_error_info() would probably return 0 because config reads would all return ~0, and PCI_ERR_COR_STATUS & ~PCI_ERR_COR_MASK would be 0, so we probably wouldn't see the e1000e messages at all. > Tested using aer-inject[1]. No more root port log on dmesg. > > [1] https://git.kernel.org/pub/scm/linux/kernel/git/gong.chen/aer-inject.git > > Signed-off-by: Jon Pan-Doh <pandoh@xxxxxxxxxx> > Reviewed-by: Karolina Stolarek <karolina.stolarek@xxxxxxxxxx> > --- > drivers/pci/pcie/aer.c | 15 --------------- > 1 file changed, 15 deletions(-) > > diff --git a/drivers/pci/pcie/aer.c b/drivers/pci/pcie/aer.c > index ad4206125b86..9a8cc81d01e4 100644 > --- a/drivers/pci/pcie/aer.c > +++ b/drivers/pci/pcie/aer.c > @@ -733,18 +733,6 @@ void aer_print_error(struct pci_dev *dev, struct aer_err_info *info) > info->severity, info->tlp_header_valid, &info->tlp); > } > > -static void aer_print_port_info(struct pci_dev *dev, struct aer_err_info *info) > -{ > - u8 bus = info->id >> 8; > - u8 devfn = info->id & 0xff; > - > - pci_info(dev, "%s%s error message received from %04x:%02x:%02x.%d\n", > - info->multi_error_valid ? "Multiple " : "", > - aer_error_severity_string[info->severity], > - pci_domain_nr(dev->bus), bus, PCI_SLOT(devfn), > - PCI_FUNC(devfn)); > -} > - > #ifdef CONFIG_ACPI_APEI_PCIEAER > int cper_severity_to_aer(int cper_severity) > { > @@ -1296,7 +1284,6 @@ static void aer_isr_one_error(struct aer_rpc *rpc, > e_info.multi_error_valid = 1; > else > e_info.multi_error_valid = 0; > - aer_print_port_info(pdev, &e_info); > > if (find_source_device(pdev, &e_info)) > aer_process_err_devices(&e_info); > @@ -1315,8 +1302,6 @@ static void aer_isr_one_error(struct aer_rpc *rpc, > else > e_info.multi_error_valid = 0; > > - aer_print_port_info(pdev, &e_info); > - > if (find_source_device(pdev, &e_info)) > aer_process_err_devices(&e_info); > } > -- > 2.48.1.601.g30ceb7b040-goog >