mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 11:44:01 +08:00
net/mlx5: Wait for firmware to enable CRS before pci_restore_state
After firmware reset driver should verify firmware already enabled CRS
and became responsive to pci config cycles before restoring pci state.
Fix that by waiting till device_id is readable through PCI again.
Fixes: eabe8e5e88
("net/mlx5: Handle sync reset now event")
Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Link: https://lore.kernel.org/r/20221026135153.154807-3-saeed@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
888be6b279
commit
212b4d7251
@ -358,6 +358,23 @@ static int mlx5_pci_link_toggle(struct mlx5_core_dev *dev)
|
||||
err = -ETIMEDOUT;
|
||||
}
|
||||
|
||||
do {
|
||||
err = pci_read_config_word(dev->pdev, PCI_DEVICE_ID, ®16);
|
||||
if (err)
|
||||
return err;
|
||||
if (reg16 == dev_id)
|
||||
break;
|
||||
msleep(20);
|
||||
} while (!time_after(jiffies, timeout));
|
||||
|
||||
if (reg16 == dev_id) {
|
||||
mlx5_core_info(dev, "Firmware responds to PCI config cycles again\n");
|
||||
} else {
|
||||
mlx5_core_err(dev, "Firmware is not responsive (0x%04x) after %llu ms\n",
|
||||
reg16, mlx5_tout_ms(dev, PCI_TOGGLE));
|
||||
err = -ETIMEDOUT;
|
||||
}
|
||||
|
||||
restore:
|
||||
list_for_each_entry(sdev, &bridge_bus->devices, bus_list) {
|
||||
pci_cfg_access_unlock(sdev);
|
||||
|
Loading…
Reference in New Issue
Block a user