Message ID | 20201217171431.502030-1-kbusch@kernel.org (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Bjorn Helgaas |
Headers | show |
Series | [1/3] PCI/ERR: Clear status of the reporting device | expand |
Hi Keith, > On Dec 17, 2020, at 9:14 AM, Keith Busch <kbusch@kernel.org> 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@kernel.org> > --- > 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@intel.com> > } > pci_info(bridge, "device recovery successful\n"); > return status; > -- > 2.24.1 >
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); } pci_info(bridge, "device recovery successful\n"); return status;
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@kernel.org> --- drivers/pci/pcie/err.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-)