Commit a705f3e3 authored by Jason Gunthorpe's avatar Jason Gunthorpe

RDMA/mlx5: Use ib_umem_start instead of umem.address

These are subtly different, the address is the original VA requested
during umem_get, while ib_umem_start() is the version that is rounded to
the proper page size, ie is the true start of the umem's dma map.

Link: https://lore.kernel.org/r/20190819111710.18440-12-leon@kernel.orgSigned-off-by: default avatarLeon Romanovsky <leonro@mellanox.com>
Signed-off-by: default avatarJason Gunthorpe <jgg@mellanox.com>
parent ce51346f
...@@ -184,7 +184,7 @@ void mlx5_odp_populate_klm(struct mlx5_klm *pklm, size_t offset, ...@@ -184,7 +184,7 @@ void mlx5_odp_populate_klm(struct mlx5_klm *pklm, size_t offset,
for (i = 0; i < nentries; i++, pklm++) { for (i = 0; i < nentries; i++, pklm++) {
pklm->bcount = cpu_to_be32(MLX5_IMR_MTT_SIZE); pklm->bcount = cpu_to_be32(MLX5_IMR_MTT_SIZE);
va = (offset + i) * MLX5_IMR_MTT_SIZE; va = (offset + i) * MLX5_IMR_MTT_SIZE;
if (odp && odp->umem.address == va) { if (odp && ib_umem_start(odp) == va) {
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);
...@@ -494,7 +494,7 @@ static struct ib_umem_odp *implicit_mr_get_data(struct mlx5_ib_mr *mr, ...@@ -494,7 +494,7 @@ static struct ib_umem_odp *implicit_mr_get_data(struct mlx5_ib_mr *mr,
addr += MLX5_IMR_MTT_SIZE; addr += MLX5_IMR_MTT_SIZE;
if (unlikely(addr < io_virt + bcnt)) { if (unlikely(addr < io_virt + bcnt)) {
odp = odp_next(odp); odp = odp_next(odp);
if (odp && odp->umem.address != addr) if (odp && ib_umem_start(odp) != addr)
odp = NULL; odp = NULL;
goto next_mr; goto next_mr;
} }
...@@ -662,7 +662,7 @@ static int pagefault_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr, ...@@ -662,7 +662,7 @@ static int pagefault_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr,
io_virt += size; io_virt += size;
next = odp_next(odp); next = odp_next(odp);
if (unlikely(!next || next->umem.address != io_virt)) { if (unlikely(!next || ib_umem_start(next) != io_virt)) {
mlx5_ib_dbg(dev, "next implicit leaf removed at 0x%llx. got %p\n", mlx5_ib_dbg(dev, "next implicit leaf removed at 0x%llx. got %p\n",
io_virt, next); io_virt, next);
return -EAGAIN; return -EAGAIN;
......
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