Hi Keith, > On Dec 17, 2020, at 9:14 AM, Keith Busch <kbusch@xxxxxxxxxx> wrote: > > Error handling operates on the first downstream port above the detected > error, but the error may have been reported by a downstream device. > Clear the AER status of the device that reported the error rather than > the first downstream port. > > Signed-off-by: Keith Busch <kbusch@xxxxxxxxxx> > --- > drivers/pci/pcie/err.c | 13 ++++++------- > 1 file changed, 6 insertions(+), 7 deletions(-) > > diff --git a/drivers/pci/pcie/err.c b/drivers/pci/pcie/err.c > index 510f31f0ef6d..a84f0bf4c1e2 100644 > --- a/drivers/pci/pcie/err.c > +++ b/drivers/pci/pcie/err.c > @@ -231,15 +231,14 @@ pci_ers_result_t pcie_do_recovery(struct pci_dev *dev, > pci_walk_bridge(bridge, report_resume, &status); > > /* > - * If we have native control of AER, clear error status in the Root > - * Port or Downstream Port that signaled the error. If the > - * platform retained control of AER, it is responsible for clearing > - * this status. In that case, the signaling device may not even be > - * visible to the OS. > + * If we have native control of AER, clear error status in the device > + * that detected the error. If the platform retained control of AER, > + * it is responsible for clearing this status. In that case, the > + * signaling device may not even be visible to the OS. > */ > if (host->native_aer || pcie_ports_native) { > - pcie_clear_device_status(bridge); > - pci_aer_clear_nonfatal_status(bridge); > + pcie_clear_device_status(dev); > + pci_aer_clear_nonfatal_status(dev); This looks good to me. Acked-by: Sean V Kelley <sean.v.kelley@xxxxxxxxx> > } > pci_info(bridge, "device recovery successful\n"); > return status; > -- > 2.24.1 >