aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/infiniband/hw/mlx5/mr.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/infiniband/hw/mlx5/mr.c b/drivers/infiniband/hw/mlx5/mr.c
index ad5898592016..9d932a2aa9f4 100644
--- a/drivers/infiniband/hw/mlx5/mr.c
+++ b/drivers/infiniband/hw/mlx5/mr.c
@@ -73,6 +73,8 @@ static void reg_mr_callback(int status, void *context)
73 struct mlx5_cache_ent *ent = &cache->ent[c]; 73 struct mlx5_cache_ent *ent = &cache->ent[c];
74 u8 key; 74 u8 key;
75 unsigned long flags; 75 unsigned long flags;
76 struct mlx5_mr_table *table = &dev->mdev.priv.mr_table;
77 int err;
76 78
77 spin_lock_irqsave(&ent->lock, flags); 79 spin_lock_irqsave(&ent->lock, flags);
78 ent->pending--; 80 ent->pending--;
@@ -107,6 +109,13 @@ static void reg_mr_callback(int status, void *context)
107 ent->cur++; 109 ent->cur++;
108 ent->size++; 110 ent->size++;
109 spin_unlock_irqrestore(&ent->lock, flags); 111 spin_unlock_irqrestore(&ent->lock, flags);
112
113 write_lock_irqsave(&table->lock, flags);
114 err = radix_tree_insert(&table->tree, mlx5_base_mkey(mr->mmr.key),
115 &mr->mmr);
116 if (err)
117 pr_err("Error inserting to mr tree. 0x%x\n", -err);
118 write_unlock_irqrestore(&table->lock, flags);
110} 119}
111 120
112static int add_keys(struct mlx5_ib_dev *dev, int c, int num) 121static int add_keys(struct mlx5_ib_dev *dev, int c, int num)