Skip to content

Commit 21af2c3

Browse files
haggaierolandd
authored andcommitted
IB/mlx5: Remove per-MR pas and dma pointers
Since UMR code now uses its own context struct on the stack, the pas and dma pointers for the UMR operation that remained in the mlx5_ib_mr struct are not necessary. This patch removes them. Fixes: a74d241 ("IB/mlx5: Refactor UMR to have its own context struct") Signed-off-by: Haggai Eran <[email protected]> Signed-off-by: Roland Dreier <[email protected]>
1 parent 70e71ca commit 21af2c3

File tree

2 files changed

+12
-11
lines changed

2 files changed

+12
-11
lines changed

drivers/infiniband/hw/mlx5/mlx5_ib.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,8 +261,6 @@ struct mlx5_ib_mr {
261261
struct list_head list;
262262
int order;
263263
int umred;
264-
__be64 *pas;
265-
dma_addr_t dma;
266264
int npages;
267265
struct mlx5_ib_dev *dev;
268266
struct mlx5_create_mkey_mbox_out out;

drivers/infiniband/hw/mlx5/mr.c

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,8 @@ static struct mlx5_ib_mr *reg_umr(struct ib_pd *pd, struct ib_umem *umem,
743743
struct mlx5_ib_mr *mr;
744744
struct ib_sge sg;
745745
int size = sizeof(u64) * npages;
746+
__be64 *mr_pas;
747+
dma_addr_t dma;
746748
int err = 0;
747749
int i;
748750

@@ -761,25 +763,26 @@ static struct mlx5_ib_mr *reg_umr(struct ib_pd *pd, struct ib_umem *umem,
761763
if (!mr)
762764
return ERR_PTR(-EAGAIN);
763765

764-
mr->pas = kmalloc(size + MLX5_UMR_ALIGN - 1, GFP_KERNEL);
765-
if (!mr->pas) {
766+
mr_pas = kmalloc(size + MLX5_UMR_ALIGN - 1, GFP_KERNEL);
767+
if (!mr_pas) {
766768
err = -ENOMEM;
767769
goto free_mr;
768770
}
769771

770772
mlx5_ib_populate_pas(dev, umem, page_shift,
771-
mr_align(mr->pas, MLX5_UMR_ALIGN), 1);
773+
mr_align(mr_pas, MLX5_UMR_ALIGN), 1);
772774

773-
mr->dma = dma_map_single(ddev, mr_align(mr->pas, MLX5_UMR_ALIGN), size,
774-
DMA_TO_DEVICE);
775-
if (dma_mapping_error(ddev, mr->dma)) {
775+
dma = dma_map_single(ddev, mr_align(mr_pas, MLX5_UMR_ALIGN), size,
776+
DMA_TO_DEVICE);
777+
if (dma_mapping_error(ddev, dma)) {
776778
err = -ENOMEM;
777779
goto free_pas;
778780
}
779781

780782
memset(&wr, 0, sizeof(wr));
781783
wr.wr_id = (u64)(unsigned long)&umr_context;
782-
prep_umr_reg_wqe(pd, &wr, &sg, mr->dma, npages, mr->mmr.key, page_shift, virt_addr, len, access_flags);
784+
prep_umr_reg_wqe(pd, &wr, &sg, dma, npages, mr->mmr.key, page_shift,
785+
virt_addr, len, access_flags);
783786

784787
mlx5_ib_init_umr_context(&umr_context);
785788
down(&umrc->sem);
@@ -801,10 +804,10 @@ static struct mlx5_ib_mr *reg_umr(struct ib_pd *pd, struct ib_umem *umem,
801804

802805
unmap_dma:
803806
up(&umrc->sem);
804-
dma_unmap_single(ddev, mr->dma, size, DMA_TO_DEVICE);
807+
dma_unmap_single(ddev, dma, size, DMA_TO_DEVICE);
805808

806809
free_pas:
807-
kfree(mr->pas);
810+
kfree(mr_pas);
808811

809812
free_mr:
810813
if (err) {

0 commit comments

Comments
 (0)