Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5d47f6c8 authored by Daniel Jurgens's avatar Daniel Jurgens Committed by David S. Miller
Browse files

net/mlx5: Don't save PCI state when PCI error is detected



When a PCI error is detected the PCI state could be corrupt, don't save
it in that flow. Save the state after initialization. After restoring the
PCI state during slot reset save it again, restoring the state destroys
the previously saved state info.

Fixes: 05ac2c0b ('net/mlx5: Fix race between PCI error handlers and
health work')
Signed-off-by: default avatarDaniel Jurgens <danielj@mellanox.com>

Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent af363705
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -1352,6 +1352,7 @@ static int init_one(struct pci_dev *pdev,
	if (err)
		goto clean_load;

	pci_save_state(pdev);
	return 0;

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_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) {
		pci_save_state(pdev);
		mlx5_drain_health_wq(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_restore_state(pdev);
	pci_save_state(pdev);

	if (wait_vital(pdev)) {
		dev_err(&pdev->dev, "%s: wait_vital timed out\n", __func__);