|
@@ -1352,6 +1352,7 @@ static int init_one(struct pci_dev *pdev,
|
|
if (err)
|
|
if (err)
|
|
goto clean_load;
|
|
goto clean_load;
|
|
|
|
|
|
|
|
+ pci_save_state(pdev);
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
clean_load:
|
|
clean_load:
|
|
@@ -1407,9 +1408,8 @@ static pci_ers_result_t mlx5_pci_err_detected(struct pci_dev *pdev,
|
|
|
|
|
|
mlx5_enter_error_state(dev);
|
|
mlx5_enter_error_state(dev);
|
|
mlx5_unload_one(dev, priv, false);
|
|
mlx5_unload_one(dev, priv, false);
|
|
- /* In case of kernel call save the pci state and drain the health wq */
|
|
|
|
|
|
+ /* In case of kernel call drain the health wq */
|
|
if (state) {
|
|
if (state) {
|
|
- pci_save_state(pdev);
|
|
|
|
mlx5_drain_health_wq(dev);
|
|
mlx5_drain_health_wq(dev);
|
|
mlx5_pci_disable_device(dev);
|
|
mlx5_pci_disable_device(dev);
|
|
}
|
|
}
|
|
@@ -1461,6 +1461,7 @@ static pci_ers_result_t mlx5_pci_slot_reset(struct pci_dev *pdev)
|
|
|
|
|
|
pci_set_master(pdev);
|
|
pci_set_master(pdev);
|
|
pci_restore_state(pdev);
|
|
pci_restore_state(pdev);
|
|
|
|
+ pci_save_state(pdev);
|
|
|
|
|
|
if (wait_vital(pdev)) {
|
|
if (wait_vital(pdev)) {
|
|
dev_err(&pdev->dev, "%s: wait_vital timed out\n", __func__);
|
|
dev_err(&pdev->dev, "%s: wait_vital timed out\n", __func__);
|