OSDN Git Service

RDMA/qedr: Use ib_umem_num_dma_blocks() instead of ib_umem_page_count()
authorJason Gunthorpe <jgg@nvidia.com>
Fri, 4 Sep 2020 22:41:51 +0000 (19:41 -0300)
committerJason Gunthorpe <jgg@nvidia.com>
Fri, 11 Sep 2020 13:24:53 +0000 (10:24 -0300)
The length of the list populated by qedr_populate_pbls() should be
calculated using ib_umem_num_dma_blocks() with the same size/shift passed
to qedr_populate_pbls().

Link: https://lore.kernel.org/r/10-v2-270386b7e60b+28f4-umem_1_jgg@nvidia.com
Acked-by: Michal Kalderon <michal.kalderon@marvell.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/qedr/verbs.c

index 6605841..9319778 100644 (file)
@@ -784,9 +784,7 @@ static inline int qedr_init_user_queue(struct ib_udata *udata,
                return PTR_ERR(q->umem);
        }
 
-       fw_pages = ib_umem_page_count(q->umem) <<
-           (PAGE_SHIFT - FW_PAGE_SHIFT);
-
+       fw_pages = ib_umem_num_dma_blocks(q->umem, 1 << FW_PAGE_SHIFT);
        rc = qedr_prepare_pbl_tbl(dev, &q->pbl_info, fw_pages, 0);
        if (rc)
                goto err0;
@@ -2856,7 +2854,8 @@ struct ib_mr *qedr_reg_user_mr(struct ib_pd *ibpd, u64 start, u64 len,
                goto err0;
        }
 
-       rc = init_mr_info(dev, &mr->info, ib_umem_page_count(mr->umem), 1);
+       rc = init_mr_info(dev, &mr->info,
+                         ib_umem_num_dma_blocks(mr->umem, PAGE_SIZE), 1);
        if (rc)
                goto err1;