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

Commit 8e033a93 authored by Yuval Mintz's avatar Yuval Mintz Committed by David S. Miller
Browse files

mlxsw: pci: Wait after reset before accessing HW



After performing reset driver polls on HW indication until learning
that the reset is done, but immediately after reset the device becomes
unresponsive which might lead to completion timeout on the first read.

Wait for 100ms before starting the polling.

Fixes: 233fa44b ("mlxsw: pci: Implement reset done check")
Signed-off-by: default avatarYuval Mintz <yuvalm@mellanox.com>
Reviewed-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarJiri Pirko <jiri@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent fc233650
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -1643,7 +1643,12 @@ static int mlxsw_pci_sw_reset(struct mlxsw_pci *mlxsw_pci,
		return 0;
	}

	wmb(); /* reset needs to be written before we read control register */
	/* Reset needs to be written before we read control register, and
	 * we must wait for the HW to become responsive once again
	 */
	wmb();
	msleep(MLXSW_PCI_SW_RESET_WAIT_MSECS);

	end = jiffies + msecs_to_jiffies(MLXSW_PCI_SW_RESET_TIMEOUT_MSECS);
	do {
		u32 val = mlxsw_pci_read32(mlxsw_pci, FW_READY);
+1 −0
Original line number Diff line number Diff line
@@ -59,6 +59,7 @@
#define MLXSW_PCI_SW_RESET			0xF0010
#define MLXSW_PCI_SW_RESET_RST_BIT		BIT(0)
#define MLXSW_PCI_SW_RESET_TIMEOUT_MSECS	5000
#define MLXSW_PCI_SW_RESET_WAIT_MSECS		100
#define MLXSW_PCI_FW_READY			0xA1844
#define MLXSW_PCI_FW_READY_MASK			0xFFFF
#define MLXSW_PCI_FW_READY_MAGIC		0x5E