Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 12 Jul 2021 12:00:51 GMT
From:      Konstantin Belousov <kib@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org
Subject:   git: 78f5ebaed62e - main - mlx5: drop Giant around VSC lock and CRSPACE enumeration on attach
Message-ID:  <202107121200.16CC0pRt009688@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch main has been updated by kib:

URL: https://cgit.FreeBSD.org/src/commit/?id=78f5ebaed62e38caafc72f4ec1c0a7c2013e15c7

commit 78f5ebaed62e38caafc72f4ec1c0a7c2013e15c7
Author:     Konstantin Belousov <konstantinb@nvidia.com>
AuthorDate: 2021-07-05 09:24:00 +0000
Commit:     Konstantin Belousov <kib@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



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202107121200.16CC0pRt009688>