Commit 9162420d authored by Jason Gunthorpe's avatar Jason Gunthorpe

RDMA/mlx5: Set the HW IOVA of the child MRs to their place in the tree

Instead of rewriting all the IOVA's to 0 as things progress down the tree
make the IOVA of the children equal to placement in the tree. This makes
things easier to understand by keeping mmkey.iova == HW configuration.

Link: https://lore.kernel.org/r/20191009160934.3143-8-jgg@ziepe.caReviewed-by: default avatarArtemy Kovalyov <artemyko@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent c2edcd69
...@@ -211,9 +211,11 @@ void mlx5_odp_populate_klm(struct mlx5_klm *pklm, size_t offset, ...@@ -211,9 +211,11 @@ void mlx5_odp_populate_klm(struct mlx5_klm *pklm, size_t offset,
struct mlx5_ib_mr *mtt = odp->private; struct mlx5_ib_mr *mtt = odp->private;
pklm->key = cpu_to_be32(mtt->ibmr.lkey); pklm->key = cpu_to_be32(mtt->ibmr.lkey);
pklm->va = cpu_to_be64(va);
odp = odp_next(odp); odp = odp_next(odp);
} else { } else {
pklm->key = cpu_to_be32(dev->null_mkey); pklm->key = cpu_to_be32(dev->null_mkey);
pklm->va = 0;
} }
mlx5_ib_dbg(dev, "[%d] va %lx key %x\n", mlx5_ib_dbg(dev, "[%d] va %lx key %x\n",
i, va, be32_to_cpu(pklm->key)); i, va, be32_to_cpu(pklm->key));
...@@ -446,7 +448,7 @@ static struct mlx5_ib_mr *implicit_get_child_mr(struct mlx5_ib_mr *imr, ...@@ -446,7 +448,7 @@ static struct mlx5_ib_mr *implicit_get_child_mr(struct mlx5_ib_mr *imr,
mr->umem = &odp->umem; mr->umem = &odp->umem;
mr->ibmr.lkey = mr->mmkey.key; mr->ibmr.lkey = mr->mmkey.key;
mr->ibmr.rkey = mr->mmkey.key; mr->ibmr.rkey = mr->mmkey.key;
mr->mmkey.iova = 0; mr->mmkey.iova = idx * MLX5_IMR_MTT_SIZE;
mr->parent = imr; mr->parent = imr;
odp->private = mr; odp->private = mr;
INIT_WORK(&odp->work, mr_leaf_free_action); INIT_WORK(&odp->work, mr_leaf_free_action);
...@@ -462,7 +464,6 @@ static struct mlx5_ib_mr *implicit_get_child_mr(struct mlx5_ib_mr *imr, ...@@ -462,7 +464,6 @@ static struct mlx5_ib_mr *implicit_get_child_mr(struct mlx5_ib_mr *imr,
goto out_release; goto out_release;
} }
mr->mmkey.iova = idx * MLX5_IMR_MTT_SIZE;
xa_store(&imr->dev->odp_mkeys, mlx5_base_mkey(mr->mmkey.key), xa_store(&imr->dev->odp_mkeys, mlx5_base_mkey(mr->mmkey.key),
&mr->mmkey, GFP_ATOMIC); &mr->mmkey, GFP_ATOMIC);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment