Lines Matching refs:mmkey

225 	mlx5r_deref_wait_odp_mkey(&mr->mmkey);  in free_implicit_child_mr_work()
234 mlx5r_deref_odp_mkey(&imr->mmkey); in free_implicit_child_mr_work()
250 if (!refcount_inc_not_zero(&imr->mmkey.usecount)) in destroy_unused_implicit_child_mr()
257 mlx5r_deref_odp_mkey(&imr->mmkey); in destroy_unused_implicit_child_mr()
263 mlx5_base_mkey(mr->mmkey.key)); in destroy_unused_implicit_child_mr()
496 mr->ibmr.lkey = mr->mmkey.key; in implicit_get_child_mr()
497 mr->ibmr.rkey = mr->mmkey.key; in implicit_get_child_mr()
506 refcount_set(&mr->mmkey.usecount, 2); in implicit_get_child_mr()
530 refcount_inc(&ret->mmkey.usecount); in implicit_get_child_mr()
535 ret = xa_store(&dev->odp_mkeys, mlx5_base_mkey(mr->mmkey.key), in implicit_get_child_mr()
536 &mr->mmkey, GFP_KERNEL); in implicit_get_child_mr()
542 mr->mmkey.type = MLX5_MKEY_IMPLICIT_CHILD; in implicit_get_child_mr()
545 mlx5_ib_dbg(mr_to_mdev(imr), "key %x mr %p\n", mr->mmkey.key, mr); in implicit_get_child_mr()
632 imr->ibmr.lkey = imr->mmkey.key; in mlx5_ib_alloc_implicit_mr()
633 imr->ibmr.rkey = imr->mmkey.key; in mlx5_ib_alloc_implicit_mr()
657 err = mlx5r_store_odp_mkey(dev, &imr->mmkey); in mlx5_ib_alloc_implicit_mr()
661 mlx5_ib_dbg(dev, "key %x mr %p\n", imr->mmkey.key, imr); in mlx5_ib_alloc_implicit_mr()
783 refcount_inc(&mtt->mmkey.usecount); in pagefault_implicit_mr()
794 mlx5r_deref_odp_mkey(&mtt->mmkey); in pagefault_implicit_mr()
962 static bool mkey_is_eq(struct mlx5_ib_mkey *mmkey, u32 key) in mkey_is_eq() argument
964 if (!mmkey) in mkey_is_eq()
966 if (mmkey->type == MLX5_MKEY_MW || in mkey_is_eq()
967 mmkey->type == MLX5_MKEY_INDIRECT_DEVX) in mkey_is_eq()
968 return mlx5_base_mkey(mmkey->key) == mlx5_base_mkey(key); in mkey_is_eq()
969 return mmkey->key == key; in mkey_is_eq()
974 struct mlx5_ib_mkey *mmkey; in find_odp_mkey() local
977 mmkey = xa_load(&dev->odp_mkeys, mlx5_base_mkey(key)); in find_odp_mkey()
978 if (!mmkey) { in find_odp_mkey()
979 mmkey = ERR_PTR(-ENOENT); in find_odp_mkey()
982 if (!mkey_is_eq(mmkey, key)) { in find_odp_mkey()
983 mmkey = ERR_PTR(-EFAULT); in find_odp_mkey()
986 refcount_inc(&mmkey->usecount); in find_odp_mkey()
990 return mmkey; in find_odp_mkey()
1011 struct mlx5_ib_mkey *mmkey; in pagefault_single_data_segment() local
1020 mmkey = find_odp_mkey(dev, key); in pagefault_single_data_segment()
1021 if (IS_ERR(mmkey)) { in pagefault_single_data_segment()
1022 ret = PTR_ERR(mmkey); in pagefault_single_data_segment()
1040 switch (mmkey->type) { in pagefault_single_data_segment()
1042 mr = container_of(mmkey, struct mlx5_ib_mr, mmkey); in pagefault_single_data_segment()
1070 sizeof(*pklm) * (mmkey->ndescs - 2); in pagefault_single_data_segment()
1085 ret = mlx5_core_query_mkey(dev->mdev, mmkey->key, out, outlen); in pagefault_single_data_segment()
1092 for (i = 0; bcnt && i < mmkey->ndescs; i++, pklm++) { in pagefault_single_data_segment()
1118 mlx5_ib_dbg(dev, "wrong mkey type %d\n", mmkey->type); in pagefault_single_data_segment()
1133 mlx5r_deref_odp_mkey(mmkey); in pagefault_single_data_segment()
1138 if (!IS_ERR(mmkey)) in pagefault_single_data_segment()
1139 mlx5r_deref_odp_mkey(mmkey); in pagefault_single_data_segment()
1548 struct mlx5_ib_mkey *mmkey; in mlx5_ib_mr_memory_pfault_handler() local
1552 mmkey = find_odp_mkey(dev, pfault->memory.mkey); in mlx5_ib_mr_memory_pfault_handler()
1553 if (IS_ERR(mmkey)) in mlx5_ib_mr_memory_pfault_handler()
1556 switch (mmkey->type) { in mlx5_ib_mr_memory_pfault_handler()
1558 child_mr = container_of(mmkey, struct mlx5_ib_mr, mmkey); in mlx5_ib_mr_memory_pfault_handler()
1562 mr = container_of(mmkey, struct mlx5_ib_mr, null_mmkey); in mlx5_ib_mr_memory_pfault_handler()
1565 mr = container_of(mmkey, struct mlx5_ib_mr, mmkey); in mlx5_ib_mr_memory_pfault_handler()
1580 mlx5r_deref_odp_mkey(mmkey); in mlx5_ib_mr_memory_pfault_handler()
1597 if (!IS_ERR(mmkey)) in mlx5_ib_mr_memory_pfault_handler()
1598 mlx5r_deref_odp_mkey(mmkey); in mlx5_ib_mr_memory_pfault_handler()
1949 mlx5r_deref_odp_mkey(&work->frags[i].mr->mmkey); in destroy_prefetch_work()
1960 struct mlx5_ib_mkey *mmkey; in get_prefetchable_mr() local
1963 mmkey = xa_load(&dev->odp_mkeys, mlx5_base_mkey(lkey)); in get_prefetchable_mr()
1964 if (!mmkey || mmkey->key != lkey) { in get_prefetchable_mr()
1968 if (mmkey->type != MLX5_MKEY_MR) { in get_prefetchable_mr()
1973 mr = container_of(mmkey, struct mlx5_ib_mr, mmkey); in get_prefetchable_mr()
1987 refcount_inc(&mmkey->usecount); in get_prefetchable_mr()
2059 mlx5r_deref_odp_mkey(&mr->mmkey); in mlx5_ib_prefetch_sg_list()
2063 mlx5r_deref_odp_mkey(&mr->mmkey); in mlx5_ib_prefetch_sg_list()