On Tuesday, October 28, 2025 3:48:16 PM Central European Standard Time Jonathan Cameron wrote: > On Thu, 23 Oct 2025 14:25:37 +0200 > "Fabio M. De Francesco" <[email protected]> wrote: > > > I/O Machine Check Architecture events may signal failing PCIe components > > or links. The AER event contains details on what was happening on the wire > > when the error was signaled. > > > > Trace the CPER PCIe Error section (UEFI v2.10, Appendix N.2.7) reported > > by the I/O MCA. > > > > Cc: Dan Williams <[email protected]> > > Reviewed-by: Dave Jiang <[email protected]> > > Reviewed-by: Jonathan Cameron <[email protected]> > > Signed-off-by: Fabio M. De Francesco <[email protected]> > Hi Fabio, > > Was taking a fresh look at this as a precursor to looking at later > patches in series and spotted something that I'm doubtful about. > > > diff --git a/drivers/acpi/acpi_extlog.c b/drivers/acpi/acpi_extlog.c > > index 47d11cb5c912..cefe8d2d8aff 100644 > > --- a/drivers/acpi/acpi_extlog.c > > +++ b/drivers/acpi/acpi_extlog.c > > @@ -132,6 +132,34 @@ static int print_extlog_rcd(const char *pfx, > > return 1; > > } > > > > +static void extlog_print_pcie(struct cper_sec_pcie *pcie_err, > > + int severity) > > +{ > > + struct aer_capability_regs *aer; > > + struct pci_dev *pdev; > > + unsigned int devfn; > > + unsigned int bus; > > + int aer_severity; > > + int domain; > > + > > + if (!(pcie_err->validation_bits & CPER_PCIE_VALID_DEVICE_ID || > > + pcie_err->validation_bits & CPER_PCIE_VALID_AER_INFO)) > > Looking again, I'm not sure this is as intended. Is the aim to > allow for either one of these two? Or check that that are both present? > That is should it be !(A && B) rather than !(A || B)? > Hi Jonathan,
You're right. We need to check that both are true and return if they are not, then the statement has to be !(A && B). Thank you, Fabio > > > + return; > > + > > + aer_severity = cper_severity_to_aer(severity); > > + aer = (struct aer_capability_regs *)pcie_err->aer_info; > > + domain = pcie_err->device_id.segment; > > + bus = pcie_err->device_id.bus; > > + devfn = PCI_DEVFN(pcie_err->device_id.device, > > + pcie_err->device_id.function); > > + pdev = pci_get_domain_bus_and_slot(domain, bus, devfn); > > + if (!pdev) > > + return; > > + > > + pci_print_aer(pdev, aer_severity, aer); > > + pci_dev_put(pdev); > > +} > >
