diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c index 41880cb9e502..79b48052ea11 100644 --- a/drivers/nvme/host/pci.c +++ b/drivers/nvme/host/pci.c @@ -2706,19 +2706,15 @@ static pci_ers_result_t nvme_slot_reset(struct pci_dev *pdev) dev_info(dev->ctrl.device, "restart after slot reset\n"); pci_restore_state(pdev); - nvme_reset_ctrl_sync(&dev->ctrl); - - switch (dev->ctrl.state) { - case NVME_CTRL_LIVE: - case NVME_CTRL_ADMIN_ONLY: - return PCI_ERS_RESULT_RECOVERED; - default: - return PCI_ERS_RESULT_DISCONNECT; - } + nvme_reset_ctrl(&dev->ctrl); + return PCI_ERS_RESULT_RECOVERED; } static void nvme_error_resume(struct pci_dev *pdev) { + struct nvme_dev *dev = pci_get_drvdata(pdev); + + flush_work(&dev->ctrl.reset_work); pci_cleanup_aer_uncorrect_error_status(pdev); }