Merge mlx5-next into rdma for-next
[sfrench/cifs-2.6.git] / drivers / infiniband / hw / mlx5 / odp.c
index 831c450b271aad438785bdb953c7ce6abe2f5a05..5b642d81e617dc61207f3a690df1e7b304203326 100644 (file)
@@ -150,7 +150,7 @@ static struct ib_umem_odp *odp_lookup(u64 start, u64 length,
                if (!rb)
                        goto not_found;
                odp = rb_entry(rb, struct ib_umem_odp, interval_tree.rb);
-               if (ib_umem_start(&odp->umem) > start + length)
+               if (ib_umem_start(odp) > start + length)
                        goto not_found;
        }
 not_found:
@@ -200,7 +200,7 @@ void mlx5_odp_populate_klm(struct mlx5_klm *pklm, size_t offset,
 static void mr_leaf_free_action(struct work_struct *work)
 {
        struct ib_umem_odp *odp = container_of(work, struct ib_umem_odp, work);
-       int idx = ib_umem_start(&odp->umem) >> MLX5_IMR_MTT_SHIFT;
+       int idx = ib_umem_start(odp) >> MLX5_IMR_MTT_SHIFT;
        struct mlx5_ib_mr *mr = odp->private, *imr = mr->parent;
 
        mr->parent = NULL;
@@ -224,7 +224,6 @@ void mlx5_ib_invalidate_range(struct ib_umem_odp *umem_odp, unsigned long start,
        const u64 umr_block_mask = (MLX5_UMR_MTT_ALIGNMENT /
                                    sizeof(struct mlx5_mtt)) - 1;
        u64 idx = 0, blk_start_idx = 0;
-       struct ib_umem *umem;
        int in_block = 0;
        u64 addr;
 
@@ -232,15 +231,14 @@ void mlx5_ib_invalidate_range(struct ib_umem_odp *umem_odp, unsigned long start,
                pr_err("invalidation called on NULL umem or non-ODP umem\n");
                return;
        }
-       umem = &umem_odp->umem;
 
        mr = umem_odp->private;
 
        if (!mr || !mr->ibmr.pd)
                return;
 
-       start = max_t(u64, ib_umem_start(umem), start);
-       end = min_t(u64, ib_umem_end(umem), end);
+       start = max_t(u64, ib_umem_start(umem_odp), start);
+       end = min_t(u64, ib_umem_end(umem_odp), end);
 
        /*
         * Iteration one - zap the HW's MTTs. The notifiers_count ensures that
@@ -249,8 +247,8 @@ void mlx5_ib_invalidate_range(struct ib_umem_odp *umem_odp, unsigned long start,
         * but they will write 0s as well, so no difference in the end result.
         */
 
-       for (addr = start; addr < end; addr += BIT(umem->page_shift)) {
-               idx = (addr - ib_umem_start(umem)) >> umem->page_shift;
+       for (addr = start; addr < end; addr += BIT(umem_odp->page_shift)) {
+               idx = (addr - ib_umem_start(umem_odp)) >> umem_odp->page_shift;
                /*
                 * Strive to write the MTTs in chunks, but avoid overwriting
                 * non-existing MTTs. The huristic here can be improved to
@@ -544,13 +542,12 @@ static int mr_leaf_free(struct ib_umem_odp *umem_odp, u64 start, u64 end,
                        void *cookie)
 {
        struct mlx5_ib_mr *mr = umem_odp->private, *imr = cookie;
-       struct ib_umem *umem = &umem_odp->umem;
 
        if (mr->parent != imr)
                return 0;
 
-       ib_umem_odp_unmap_dma_pages(umem_odp, ib_umem_start(umem),
-                                   ib_umem_end(umem));
+       ib_umem_odp_unmap_dma_pages(umem_odp, ib_umem_start(umem_odp),
+                                   ib_umem_end(umem_odp));
 
        if (umem_odp->dying)
                return 0;
@@ -602,9 +599,9 @@ static int pagefault_mr(struct mlx5_ib_dev *dev, struct mlx5_ib_mr *mr,
        }
 
 next_mr:
-       size = min_t(size_t, bcnt, ib_umem_end(&odp->umem) - io_virt);
+       size = min_t(size_t, bcnt, ib_umem_end(odp) - io_virt);
 
-       page_shift = mr->umem->page_shift;
+       page_shift = odp->page_shift;
        page_mask = ~(BIT(page_shift) - 1);
        start_idx = (io_virt - (mr->mmkey.iova & page_mask)) >> page_shift;
        access_mask = ODP_READ_ALLOWED_BIT;