net/mlx4_core: Do not reset module-parameter num_vfs when fail to enable sriov
Consider the following scenario: 2 HCAs, where only one of which can run SRIOV. If we reset the module parameter, all the VFs of the SRIOV HCA will be claimed by the PPF host (-- the code relies on num_vfs being non-zero to avoid this claiming, and num_vfs was reset when pci_enable_sriov failed for the non-SRIOV HCA). The solution is not to touch the num_vfs parameter. Also, eliminate the unneeded check of num_vfs when disabling sriov (the dev flag bit is sufficient). Signed-off-by: Jack Morgenstein <jackm@dev.mellanox.co.il> Signed-off-by: Or Gerlitz <ogerlitz@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
b9985f410a
Коммит
681372a7a3
|
@ -1865,7 +1865,6 @@ static int __mlx4_init_one(struct pci_dev *pdev, const struct pci_device_id *id)
|
||||||
mlx4_err(dev, "Failed to enable sriov,"
|
mlx4_err(dev, "Failed to enable sriov,"
|
||||||
"continuing without sriov enabled"
|
"continuing without sriov enabled"
|
||||||
" (err = %d).\n", err);
|
" (err = %d).\n", err);
|
||||||
num_vfs = 0;
|
|
||||||
err = 0;
|
err = 0;
|
||||||
} else {
|
} else {
|
||||||
mlx4_warn(dev, "Running in master mode\n");
|
mlx4_warn(dev, "Running in master mode\n");
|
||||||
|
@ -2022,7 +2021,7 @@ err_cmd:
|
||||||
mlx4_cmd_cleanup(dev);
|
mlx4_cmd_cleanup(dev);
|
||||||
|
|
||||||
err_sriov:
|
err_sriov:
|
||||||
if (num_vfs && (dev->flags & MLX4_FLAG_SRIOV))
|
if (dev->flags & MLX4_FLAG_SRIOV)
|
||||||
pci_disable_sriov(pdev);
|
pci_disable_sriov(pdev);
|
||||||
|
|
||||||
err_rel_own:
|
err_rel_own:
|
||||||
|
@ -2099,7 +2098,7 @@ static void mlx4_remove_one(struct pci_dev *pdev)
|
||||||
|
|
||||||
if (dev->flags & MLX4_FLAG_MSI_X)
|
if (dev->flags & MLX4_FLAG_MSI_X)
|
||||||
pci_disable_msix(pdev);
|
pci_disable_msix(pdev);
|
||||||
if (num_vfs && (dev->flags & MLX4_FLAG_SRIOV)) {
|
if (dev->flags & MLX4_FLAG_SRIOV) {
|
||||||
mlx4_warn(dev, "Disabling sriov\n");
|
mlx4_warn(dev, "Disabling sriov\n");
|
||||||
pci_disable_sriov(pdev);
|
pci_disable_sriov(pdev);
|
||||||
}
|
}
|
||||||
|
|
Загрузка…
Ссылка в новой задаче