git: 78f5ebaed62e - main - mlx5: drop Giant around VSC lock and CRSPACE enumeration on attach
Konstantin Belousov
kib at FreeBSD.org
Mon Jul 12 12:00:54 UTC 2021
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=78f5ebaed62e38caafc72f4ec1c0a7c2013e15c7
commit 78f5ebaed62e38caafc72f4ec1c0a7c2013e15c7
Author: Konstantin Belousov <konstantinb at nvidia.com>
AuthorDate: 2021-07-05 09:24:00 +0000
Commit: Konstantin Belousov <kib at FreeBSD.org>
CommitDate: 2021-07-12 09:34:40 +0000
mlx5: drop Giant around VSC lock and CRSPACE enumeration on attach
This code practically has not sleeping points, so Giant is locked for very
long time.
Noted and reviewed by: hselasky
MFC after: 1 week
Sponsored by: Mellanox Technologies // NVIDIA Networking
---
sys/dev/mlx5/mlx5_core/mlx5_fwdump.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/sys/dev/mlx5/mlx5_core/mlx5_fwdump.c b/sys/dev/mlx5/mlx5_core/mlx5_fwdump.c
index 7bb563846144..a23de943f4aa 100644
--- a/sys/dev/mlx5/mlx5_core/mlx5_fwdump.c
+++ b/sys/dev/mlx5/mlx5_core/mlx5_fwdump.c
@@ -81,17 +81,19 @@ mlx5_fwdump_prep(struct mlx5_core_dev *mdev)
return;
}
+ DROP_GIANT();
+
error = mlx5_vsc_find_cap(mdev);
if (error != 0) {
/* Inability to create a firmware dump is not fatal. */
mlx5_core_warn(mdev,
"Unable to find vendor-specific capability, error %d\n",
error);
- return;
+ goto pickup_g;
}
error = mlx5_vsc_lock(mdev);
if (error != 0)
- return;
+ goto pickup_g;
error = mlx5_vsc_set_space(mdev, MLX5_VSC_DOMAIN_SCAN_CRSPACE);
if (error != 0) {
mlx5_core_warn(mdev, "VSC scan space is not supported\n");
@@ -180,6 +182,8 @@ mlx5_fwdump_prep(struct mlx5_core_dev *mdev)
unlock_vsc:
mlx5_vsc_unlock(mdev);
+pickup_g:
+ PICKUP_GIANT();
}
int
More information about the dev-commits-src-all
mailing list