When state is pci_channel_io_frozen in pcie_do_recovery(),
the severity is fatal and fatal status should be cleared.
So we add pci_aer_clear_fatal_status().

Signed-off-by: Zhuo Chen <chenzhu...@bytedance.com>
---
 drivers/pci/pcie/err.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/drivers/pci/pcie/err.c b/drivers/pci/pcie/err.c
index f80b21244ef1..b46f1d36c090 100644
--- a/drivers/pci/pcie/err.c
+++ b/drivers/pci/pcie/err.c
@@ -241,7 +241,10 @@ pci_ers_result_t pcie_do_recovery(struct pci_dev *dev,
        pci_walk_bridge(bridge, report_resume, &status);
 
        pcie_clear_device_status(dev);
-       pci_aer_clear_nonfatal_status(dev);
+       if (state == pci_channel_io_frozen)
+               pci_aer_clear_fatal_status(dev);
+       else
+               pci_aer_clear_nonfatal_status(dev);
 
        pci_info(bridge, "device recovery successful\n");
        return status;
-- 
2.30.1 (Apple Git-130)

Reply via email to