]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
RDMA/mlx5: Move device async_ctx initialization
authorChiara Meiohas <cmeiohas@nvidia.com>
Thu, 26 Feb 2026 13:52:06 +0000 (15:52 +0200)
committerLeon Romanovsky <leon@kernel.org>
Mon, 2 Mar 2026 18:44:37 +0000 (13:44 -0500)
Move the async_ctx initialization from mlx5_mkey_cache_init() to
mlx5_ib_stage_init_init() since the async_ctx is used by both the MR
cache and DEVX.

Also add the corresponding cleanup in mlx5_ib_stage_init_cleanup() to
properly release the async_ctx resources.

Signed-off-by: Chiara Meiohas <cmeiohas@nvidia.com>
Reviewed-by: Michael Guralnik <michaelgur@nvidia.com>
Signed-off-by: Edward Srouji <edwards@nvidia.com>
Link: https://patch.msgid.link/20260226-frmr_pools-v4-1-95360b54f15e@nvidia.com
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/hw/mlx5/main.c
drivers/infiniband/hw/mlx5/mr.c

index 7528f0d7580229929861f0213ce363a84ab4e21d..e0f8fcbbbd31c0b65116f0a2ccb7d437a7d4479e 100644 (file)
@@ -4416,6 +4416,7 @@ static const struct uapi_definition mlx5_ib_defs[] = {
 
 static void mlx5_ib_stage_init_cleanup(struct mlx5_ib_dev *dev)
 {
+       mlx5_cmd_cleanup_async_ctx(&dev->async_ctx);
        mlx5_ib_data_direct_cleanup(dev);
        mlx5_ib_cleanup_multiport_master(dev);
        WARN_ON(!xa_empty(&dev->odp_mkeys));
@@ -4485,6 +4486,8 @@ static int mlx5_ib_stage_init_init(struct mlx5_ib_dev *dev)
        if (err && err != -EOPNOTSUPP)
                goto err_dd;
 
+       mlx5_cmd_init_async_ctx(mdev, &dev->async_ctx);
+
        return 0;
 err_dd:
        mlx5_ib_data_direct_cleanup(dev);
index 665323b90b64f78d0f556bafddfacd42904feb87..6cb21290082079fcfa61d8a3b5de3970d38836ba 100644 (file)
@@ -978,7 +978,6 @@ int mlx5_mkey_cache_init(struct mlx5_ib_dev *dev)
                return -ENOMEM;
        }
 
-       mlx5_cmd_init_async_ctx(dev->mdev, &dev->async_ctx);
        timer_setup(&dev->delay_timer, delay_time_func, 0);
        mlx5_mkey_cache_debugfs_init(dev);
        mutex_lock(&cache->rb_lock);
@@ -1040,7 +1039,6 @@ void mlx5_mkey_cache_cleanup(struct mlx5_ib_dev *dev)
        flush_workqueue(dev->cache.wq);
 
        mlx5_mkey_cache_debugfs_cleanup(dev);
-       mlx5_cmd_cleanup_async_ctx(&dev->async_ctx);
 
        /* At this point all entries are disabled and have no concurrent work. */
        mlx5r_destroy_cache_entries(dev);