|
@@ -1337,50 +1337,6 @@ err_free:
|
|
return ERR_PTR(err);
|
|
return ERR_PTR(err);
|
|
}
|
|
}
|
|
|
|
|
|
-struct ib_mr *mlx5_ib_alloc_fast_reg_mr(struct ib_pd *pd,
|
|
|
|
- int max_page_list_len)
|
|
|
|
-{
|
|
|
|
- struct mlx5_ib_dev *dev = to_mdev(pd->device);
|
|
|
|
- struct mlx5_create_mkey_mbox_in *in;
|
|
|
|
- struct mlx5_ib_mr *mr;
|
|
|
|
- int err;
|
|
|
|
-
|
|
|
|
- mr = kzalloc(sizeof(*mr), GFP_KERNEL);
|
|
|
|
- if (!mr)
|
|
|
|
- return ERR_PTR(-ENOMEM);
|
|
|
|
-
|
|
|
|
- in = kzalloc(sizeof(*in), GFP_KERNEL);
|
|
|
|
- if (!in) {
|
|
|
|
- err = -ENOMEM;
|
|
|
|
- goto err_free;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- in->seg.status = MLX5_MKEY_STATUS_FREE;
|
|
|
|
- in->seg.xlt_oct_size = cpu_to_be32((max_page_list_len + 1) / 2);
|
|
|
|
- in->seg.qpn_mkey7_0 = cpu_to_be32(0xffffff << 8);
|
|
|
|
- in->seg.flags = MLX5_PERM_UMR_EN | MLX5_ACCESS_MODE_MTT;
|
|
|
|
- in->seg.flags_pd = cpu_to_be32(to_mpd(pd)->pdn);
|
|
|
|
- /*
|
|
|
|
- * TBD not needed - issue 197292 */
|
|
|
|
- in->seg.log2_page_size = PAGE_SHIFT;
|
|
|
|
-
|
|
|
|
- err = mlx5_core_create_mkey(dev->mdev, &mr->mmr, in, sizeof(*in), NULL,
|
|
|
|
- NULL, NULL);
|
|
|
|
- kfree(in);
|
|
|
|
- if (err)
|
|
|
|
- goto err_free;
|
|
|
|
-
|
|
|
|
- mr->ibmr.lkey = mr->mmr.key;
|
|
|
|
- mr->ibmr.rkey = mr->mmr.key;
|
|
|
|
- mr->umem = NULL;
|
|
|
|
-
|
|
|
|
- return &mr->ibmr;
|
|
|
|
-
|
|
|
|
-err_free:
|
|
|
|
- kfree(mr);
|
|
|
|
- return ERR_PTR(err);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
struct ib_fast_reg_page_list *mlx5_ib_alloc_fast_reg_page_list(struct ib_device *ibdev,
|
|
struct ib_fast_reg_page_list *mlx5_ib_alloc_fast_reg_page_list(struct ib_device *ibdev,
|
|
int page_list_len)
|
|
int page_list_len)
|
|
{
|
|
{
|