mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-30 08:02:30 +00:00
IB/mlx5: Add MR to radix tree in reg_mr_callback
For memory regions that are allocated using reg_umr, the suffix of mlx5_core_create_mkey isn't being called. Instead the creation is completed in a callback function (reg_mr_callback). This means that these MRs aren't being added to the MR radix tree. Add them in the callback. Signed-off-by: Haggai Eran <haggaie@mellanox.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
096f7e72c6
commit
8605933a22
1 changed files with 9 additions and 0 deletions
|
@ -73,6 +73,8 @@ static void reg_mr_callback(int status, void *context)
|
||||||
struct mlx5_cache_ent *ent = &cache->ent[c];
|
struct mlx5_cache_ent *ent = &cache->ent[c];
|
||||||
u8 key;
|
u8 key;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
|
struct mlx5_mr_table *table = &dev->mdev.priv.mr_table;
|
||||||
|
int err;
|
||||||
|
|
||||||
spin_lock_irqsave(&ent->lock, flags);
|
spin_lock_irqsave(&ent->lock, flags);
|
||||||
ent->pending--;
|
ent->pending--;
|
||||||
|
@ -107,6 +109,13 @@ static void reg_mr_callback(int status, void *context)
|
||||||
ent->cur++;
|
ent->cur++;
|
||||||
ent->size++;
|
ent->size++;
|
||||||
spin_unlock_irqrestore(&ent->lock, flags);
|
spin_unlock_irqrestore(&ent->lock, flags);
|
||||||
|
|
||||||
|
write_lock_irqsave(&table->lock, flags);
|
||||||
|
err = radix_tree_insert(&table->tree, mlx5_base_mkey(mr->mmr.key),
|
||||||
|
&mr->mmr);
|
||||||
|
if (err)
|
||||||
|
pr_err("Error inserting to mr tree. 0x%x\n", -err);
|
||||||
|
write_unlock_irqrestore(&table->lock, flags);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int add_keys(struct mlx5_ib_dev *dev, int c, int num)
|
static int add_keys(struct mlx5_ib_dev *dev, int c, int num)
|
||||||
|
|
Loading…
Reference in a new issue