All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH for-next 0/2] RDMA/bnxt_re: Allow bigger user MRs
@ 2021-01-07  6:39 Selvin Xavier
  2021-01-07  6:39 ` [PATCH for-next 1/2] RDMA/bnxt_re: Code refactor while populating " Selvin Xavier
  2021-01-07  6:39 ` [PATCH for-next 2/2] RDMA/bnxt_re: Allow bigger MR creation Selvin Xavier
  0 siblings, 2 replies; 5+ messages in thread
From: Selvin Xavier @ 2021-01-07  6:39 UTC (permalink / raw)
  To: jgg, dledford; +Cc: linux-rdma, Selvin Xavier

Refactor user space MR code to handle bigger MRs. Removes couple of checks
that prevented the bigger MRs.

Selvin Xavier (2):
  RDMA/bnxt_re: Code refactor while populating user MRs
  RDMA/bnxt_re: Allow bigger MR creation

 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 47 ++++----------------------------
 drivers/infiniband/hw/bnxt_re/qplib_sp.c | 29 +++++---------------
 drivers/infiniband/hw/bnxt_re/qplib_sp.h |  2 +-
 3 files changed, 14 insertions(+), 64 deletions(-)

-- 
2.5.5


^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH for-next 1/2] RDMA/bnxt_re: Code refactor while populating user MRs
  2021-01-07  6:39 [PATCH for-next 0/2] RDMA/bnxt_re: Allow bigger user MRs Selvin Xavier
@ 2021-01-07  6:39 ` Selvin Xavier
  2021-01-07  8:03     ` kernel test robot
  2021-01-07  6:39 ` [PATCH for-next 2/2] RDMA/bnxt_re: Allow bigger MR creation Selvin Xavier
  1 sibling, 1 reply; 5+ messages in thread
From: Selvin Xavier @ 2021-01-07  6:39 UTC (permalink / raw)
  To: jgg, dledford; +Cc: linux-rdma, Selvin Xavier, Devesh Sharma

Refactor code that populates MR page buffer list. Instead of allocating
a pbl_tbl to hold the buffer list, pass the struct ib_umem directly
to bnxt_qplib_alloc_init_hwq as done for other user space memories.
Fix the PBL level to handle the above mentioned change.

Also, remove an unwanted flag from the input to bnxt_qplib_reg_mr
function.

Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
---
 drivers/infiniband/hw/bnxt_re/ib_verbs.c | 39 +++++---------------------------
 drivers/infiniband/hw/bnxt_re/qplib_sp.c | 17 +++++---------
 drivers/infiniband/hw/bnxt_re/qplib_sp.h |  2 +-
 3 files changed, 13 insertions(+), 45 deletions(-)

diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
index 401bdc9..6b5b8d1 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
@@ -505,8 +505,8 @@ static int bnxt_re_create_fence_mr(struct bnxt_re_pd *pd)
 	mr->qplib_mr.va = (u64)(unsigned long)fence->va;
 	mr->qplib_mr.total_size = BNXT_RE_FENCE_BYTES;
 	pbl_tbl = dma_addr;
-	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, &pbl_tbl,
-			       BNXT_RE_FENCE_PBL_SIZE, false, PAGE_SIZE);
+	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, NULL,
+			       BNXT_RE_FENCE_PBL_SIZE, PAGE_SIZE);
 	if (rc) {
 		ibdev_err(&rdev->ibdev, "Failed to register fence-MR\n");
 		goto fail;
@@ -3589,7 +3589,6 @@ struct ib_mr *bnxt_re_get_dma_mr(struct ib_pd *ib_pd, int mr_access_flags)
 	struct bnxt_re_pd *pd = container_of(ib_pd, struct bnxt_re_pd, ib_pd);
 	struct bnxt_re_dev *rdev = pd->rdev;
 	struct bnxt_re_mr *mr;
-	u64 pbl = 0;
 	int rc;
 
 	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
@@ -3608,7 +3607,7 @@ struct ib_mr *bnxt_re_get_dma_mr(struct ib_pd *ib_pd, int mr_access_flags)
 
 	mr->qplib_mr.hwq.level = PBL_LVL_MAX;
 	mr->qplib_mr.total_size = -1; /* Infinte length */
-	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, &pbl, 0, false,
+	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, NULL, 0,
 			       PAGE_SIZE);
 	if (rc)
 		goto fail_mr;
@@ -3779,19 +3778,6 @@ int bnxt_re_dealloc_mw(struct ib_mw *ib_mw)
 	return rc;
 }
 
-static int fill_umem_pbl_tbl(struct ib_umem *umem, u64 *pbl_tbl_orig,
-			     int page_shift)
-{
-	u64 *pbl_tbl = pbl_tbl_orig;
-	u64 page_size =  BIT_ULL(page_shift);
-	struct ib_block_iter biter;
-
-	rdma_umem_for_each_dma_block(umem, &biter, page_size)
-		*pbl_tbl++ = rdma_block_iter_dma_address(&biter);
-
-	return pbl_tbl - pbl_tbl_orig;
-}
-
 /* uverbs */
 struct ib_mr *bnxt_re_reg_user_mr(struct ib_pd *ib_pd, u64 start, u64 length,
 				  u64 virt_addr, int mr_access_flags,
@@ -3801,7 +3787,6 @@ struct ib_mr *bnxt_re_reg_user_mr(struct ib_pd *ib_pd, u64 start, u64 length,
 	struct bnxt_re_dev *rdev = pd->rdev;
 	struct bnxt_re_mr *mr;
 	struct ib_umem *umem;
-	u64 *pbl_tbl = NULL;
 	unsigned long page_size;
 	int umem_pgs, rc;
 
@@ -3855,30 +3840,18 @@ struct ib_mr *bnxt_re_reg_user_mr(struct ib_pd *ib_pd, u64 start, u64 length,
 	}
 
 	umem_pgs = ib_umem_num_dma_blocks(umem, page_size);
-	pbl_tbl = kcalloc(umem_pgs, sizeof(*pbl_tbl), GFP_KERNEL);
-	if (!pbl_tbl) {
-		rc = -ENOMEM;
-		goto free_umem;
-	}
-
-	/* Map umem buf ptrs to the PBL */
-	umem_pgs = fill_umem_pbl_tbl(umem, pbl_tbl, order_base_2(page_size));
-	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, pbl_tbl,
-			       umem_pgs, false, page_size);
+	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, umem,
+			       umem_pgs, page_size);
 	if (rc) {
 		ibdev_err(&rdev->ibdev, "Failed to register user MR");
-		goto fail;
+		goto free_umem;
 	}
 
-	kfree(pbl_tbl);
-
 	mr->ib_mr.lkey = mr->qplib_mr.lkey;
 	mr->ib_mr.rkey = mr->qplib_mr.lkey;
 	atomic_inc(&rdev->mr_count);
 
 	return &mr->ib_mr;
-fail:
-	kfree(pbl_tbl);
 free_umem:
 	ib_umem_release(umem);
 free_mrw:
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.c b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
index 6316179..22cb46a 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_sp.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
@@ -650,16 +650,15 @@ int bnxt_qplib_dereg_mrw(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mrw,
 }
 
 int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr,
-		      u64 *pbl_tbl, int num_pbls, bool block, u32 buf_pg_size)
+		      struct ib_umem *umem, int num_pbls, u32 buf_pg_size)
 {
 	struct bnxt_qplib_rcfw *rcfw = res->rcfw;
 	struct bnxt_qplib_hwq_attr hwq_attr = {};
 	struct bnxt_qplib_sg_info sginfo = {};
 	struct creq_register_mr_resp resp;
 	struct cmdq_register_mr req;
-	int pg_ptrs, pages, i, rc;
 	u16 cmd_flags = 0, level;
-	dma_addr_t **pbl_ptr;
+	int pages, rc, pg_ptrs;
 	u32 pg_size;
 
 	if (num_pbls) {
@@ -683,9 +682,10 @@ int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr,
 		/* Use system PAGE_SIZE */
 		hwq_attr.res = res;
 		hwq_attr.depth = pages;
-		hwq_attr.stride = PAGE_SIZE;
+		hwq_attr.stride = buf_pg_size;
 		hwq_attr.type = HWQ_TYPE_MR;
 		hwq_attr.sginfo = &sginfo;
+		hwq_attr.sginfo->umem = umem;
 		hwq_attr.sginfo->npages = pages;
 		hwq_attr.sginfo->pgsize = PAGE_SIZE;
 		hwq_attr.sginfo->pgshft = PAGE_SHIFT;
@@ -695,11 +695,6 @@ int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr,
 				"SP: Reg MR memory allocation failed\n");
 			return -ENOMEM;
 		}
-		/* Write to the hwq */
-		pbl_ptr = (dma_addr_t **)mr->hwq.pbl_ptr;
-		for (i = 0; i < num_pbls; i++)
-			pbl_ptr[PTR_PG(i)][PTR_IDX(i)] =
-				(pbl_tbl[i] & PAGE_MASK) | PTU_PTE_VALID;
 	}
 
 	RCFW_CMD_PREP(req, REGISTER_MR, cmd_flags);
@@ -711,7 +706,7 @@ int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr,
 		req.pbl = 0;
 		pg_size = PAGE_SIZE;
 	} else {
-		level = mr->hwq.level + 1;
+		level = mr->hwq.level;
 		req.pbl = cpu_to_le64(mr->hwq.pbl[PBL_LVL_0].pg_map_arr[0]);
 	}
 	pg_size = buf_pg_size ? buf_pg_size : PAGE_SIZE;
@@ -728,7 +723,7 @@ int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr,
 	req.mr_size = cpu_to_le64(mr->total_size);
 
 	rc = bnxt_qplib_rcfw_send_message(rcfw, (void *)&req,
-					  (void *)&resp, NULL, block);
+					  (void *)&resp, NULL, false);
 	if (rc)
 		goto fail;
 
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.h b/drivers/infiniband/hw/bnxt_re/qplib_sp.h
index 967890c..bc22834 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_sp.h
+++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.h
@@ -254,7 +254,7 @@ int bnxt_qplib_alloc_mrw(struct bnxt_qplib_res *res,
 int bnxt_qplib_dereg_mrw(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mrw,
 			 bool block);
 int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr,
-		      u64 *pbl_tbl, int num_pbls, bool block, u32 buf_pg_size);
+		      struct ib_umem *umem, int num_pbls, u32 buf_pg_size);
 int bnxt_qplib_free_mrw(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr);
 int bnxt_qplib_alloc_fast_reg_mr(struct bnxt_qplib_res *res,
 				 struct bnxt_qplib_mrw *mr, int max);
-- 
2.5.5


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH for-next 2/2] RDMA/bnxt_re: Allow bigger MR creation
  2021-01-07  6:39 [PATCH for-next 0/2] RDMA/bnxt_re: Allow bigger user MRs Selvin Xavier
  2021-01-07  6:39 ` [PATCH for-next 1/2] RDMA/bnxt_re: Code refactor while populating " Selvin Xavier
@ 2021-01-07  6:39 ` Selvin Xavier
  1 sibling, 0 replies; 5+ messages in thread
From: Selvin Xavier @ 2021-01-07  6:39 UTC (permalink / raw)
  To: jgg, dledford; +Cc: linux-rdma, Selvin Xavier, Devesh Sharma

Allow users to create bigger MRs. Remove the check that
prevented creating MRs with number of pages more than 512.

Signed-off-by: Devesh Sharma <devesh.sharma@broadcom.com>
Signed-off-by: Selvin Xavier <selvin.xavier@broadcom.com>
---
 drivers/infiniband/hw/bnxt_re/ib_verbs.c |  8 --------
 drivers/infiniband/hw/bnxt_re/qplib_sp.c | 14 ++------------
 2 files changed, 2 insertions(+), 20 deletions(-)

diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
index 6b5b8d1..f8c714f 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
@@ -3831,14 +3831,6 @@ struct ib_mr *bnxt_re_reg_user_mr(struct ib_pd *ib_pd, u64 start, u64 length,
 	}
 	mr->qplib_mr.total_size = length;
 
-	if (page_size == BNXT_RE_PAGE_SIZE_4K &&
-	    length > BNXT_RE_MAX_MR_SIZE_LOW) {
-		ibdev_err(&rdev->ibdev, "Requested MR Sz:%llu Max sup:%llu",
-			  length, (u64)BNXT_RE_MAX_MR_SIZE_LOW);
-		rc = -EINVAL;
-		goto free_umem;
-	}
-
 	umem_pgs = ib_umem_num_dma_blocks(umem, page_size);
 	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, umem,
 			       umem_pgs, page_size);
diff --git a/drivers/infiniband/hw/bnxt_re/qplib_sp.c b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
index 22cb46a..049b357 100644
--- a/drivers/infiniband/hw/bnxt_re/qplib_sp.c
+++ b/drivers/infiniband/hw/bnxt_re/qplib_sp.c
@@ -658,24 +658,14 @@ int bnxt_qplib_reg_mr(struct bnxt_qplib_res *res, struct bnxt_qplib_mrw *mr,
 	struct creq_register_mr_resp resp;
 	struct cmdq_register_mr req;
 	u16 cmd_flags = 0, level;
-	int pages, rc, pg_ptrs;
+	int pages, rc;
 	u32 pg_size;
 
 	if (num_pbls) {
+		pages = roundup_pow_of_two(num_pbls);
 		/* Allocate memory for the non-leaf pages to store buf ptrs.
 		 * Non-leaf pages always uses system PAGE_SIZE
 		 */
-		pg_ptrs = roundup_pow_of_two(num_pbls);
-		pages = pg_ptrs >> MAX_PBL_LVL_1_PGS_SHIFT;
-		if (!pages)
-			pages++;
-
-		if (pages > MAX_PBL_LVL_1_PGS) {
-			dev_err(&res->pdev->dev,
-				"SP: Reg MR: pages requested (0x%x) exceeded max (0x%x)\n",
-				pages, MAX_PBL_LVL_1_PGS);
-			return -ENOMEM;
-		}
 		/* Free the hwq if it already exist, must be a rereg */
 		if (mr->hwq.max_elements)
 			bnxt_qplib_free_hwq(res, &mr->hwq);
-- 
2.5.5


^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH for-next 1/2] RDMA/bnxt_re: Code refactor while populating user MRs
  2021-01-07  6:39 ` [PATCH for-next 1/2] RDMA/bnxt_re: Code refactor while populating " Selvin Xavier
@ 2021-01-07  8:03     ` kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2021-01-07  8:03 UTC (permalink / raw)
  To: Selvin Xavier, jgg, dledford
  Cc: kbuild-all, linux-rdma, Selvin Xavier, Devesh Sharma

[-- Attachment #1: Type: text/plain, Size: 7376 bytes --]

Hi Selvin,

I love your patch! Perhaps something to improve:

[auto build test WARNING on rdma/for-next]
[also build test WARNING on v5.11-rc2 next-20210104]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Selvin-Xavier/RDMA-bnxt_re-Allow-bigger-user-MRs/20210107-145124
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/a37827df6f226ed7b3fd1a3ccc4c47f5b893adf9
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Selvin-Xavier/RDMA-bnxt_re-Allow-bigger-user-MRs/20210107-145124
        git checkout a37827df6f226ed7b3fd1a3ccc4c47f5b893adf9
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/infiniband/hw/bnxt_re/ib_verbs.c: In function 'bnxt_re_create_fence_mr':
>> drivers/infiniband/hw/bnxt_re/ib_verbs.c:472:6: warning: variable 'pbl_tbl' set but not used [-Wunused-but-set-variable]
     472 |  u64 pbl_tbl;
         |      ^~~~~~~

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for FRAME_POINTER
   Depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
   Selected by
   - FAULT_INJECTION_STACKTRACE_FILTER && FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT && !X86_64 && !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86


vim +/pbl_tbl +472 drivers/infiniband/hw/bnxt_re/ib_verbs.c

9152e0b722b290 Eddie Wai     2017-06-14  462  
9152e0b722b290 Eddie Wai     2017-06-14  463  static int bnxt_re_create_fence_mr(struct bnxt_re_pd *pd)
9152e0b722b290 Eddie Wai     2017-06-14  464  {
9152e0b722b290 Eddie Wai     2017-06-14  465  	int mr_access_flags = IB_ACCESS_LOCAL_WRITE | IB_ACCESS_MW_BIND;
9152e0b722b290 Eddie Wai     2017-06-14  466  	struct bnxt_re_fence_data *fence = &pd->fence;
9152e0b722b290 Eddie Wai     2017-06-14  467  	struct bnxt_re_dev *rdev = pd->rdev;
9152e0b722b290 Eddie Wai     2017-06-14  468  	struct device *dev = &rdev->en_dev->pdev->dev;
9152e0b722b290 Eddie Wai     2017-06-14  469  	struct bnxt_re_mr *mr = NULL;
9152e0b722b290 Eddie Wai     2017-06-14  470  	dma_addr_t dma_addr = 0;
9152e0b722b290 Eddie Wai     2017-06-14  471  	struct ib_mw *mw;
9152e0b722b290 Eddie Wai     2017-06-14 @472  	u64 pbl_tbl;
9152e0b722b290 Eddie Wai     2017-06-14  473  	int rc;
9152e0b722b290 Eddie Wai     2017-06-14  474  
9152e0b722b290 Eddie Wai     2017-06-14  475  	dma_addr = dma_map_single(dev, fence->va, BNXT_RE_FENCE_BYTES,
9152e0b722b290 Eddie Wai     2017-06-14  476  				  DMA_BIDIRECTIONAL);
9152e0b722b290 Eddie Wai     2017-06-14  477  	rc = dma_mapping_error(dev, dma_addr);
9152e0b722b290 Eddie Wai     2017-06-14  478  	if (rc) {
6ccad8483b2866 Devesh Sharma 2020-02-15  479  		ibdev_err(&rdev->ibdev, "Failed to dma-map fence-MR-mem\n");
9152e0b722b290 Eddie Wai     2017-06-14  480  		rc = -EIO;
9152e0b722b290 Eddie Wai     2017-06-14  481  		fence->dma_addr = 0;
9152e0b722b290 Eddie Wai     2017-06-14  482  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  483  	}
9152e0b722b290 Eddie Wai     2017-06-14  484  	fence->dma_addr = dma_addr;
9152e0b722b290 Eddie Wai     2017-06-14  485  
9152e0b722b290 Eddie Wai     2017-06-14  486  	/* Allocate a MR */
9152e0b722b290 Eddie Wai     2017-06-14  487  	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
9152e0b722b290 Eddie Wai     2017-06-14  488  	if (!mr) {
9152e0b722b290 Eddie Wai     2017-06-14  489  		rc = -ENOMEM;
9152e0b722b290 Eddie Wai     2017-06-14  490  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  491  	}
9152e0b722b290 Eddie Wai     2017-06-14  492  	fence->mr = mr;
9152e0b722b290 Eddie Wai     2017-06-14  493  	mr->rdev = rdev;
9152e0b722b290 Eddie Wai     2017-06-14  494  	mr->qplib_mr.pd = &pd->qplib_pd;
9152e0b722b290 Eddie Wai     2017-06-14  495  	mr->qplib_mr.type = CMDQ_ALLOCATE_MRW_MRW_FLAGS_PMR;
9152e0b722b290 Eddie Wai     2017-06-14  496  	mr->qplib_mr.flags = __from_ib_access_flags(mr_access_flags);
9152e0b722b290 Eddie Wai     2017-06-14  497  	rc = bnxt_qplib_alloc_mrw(&rdev->qplib_res, &mr->qplib_mr);
9152e0b722b290 Eddie Wai     2017-06-14  498  	if (rc) {
6ccad8483b2866 Devesh Sharma 2020-02-15  499  		ibdev_err(&rdev->ibdev, "Failed to alloc fence-HW-MR\n");
9152e0b722b290 Eddie Wai     2017-06-14  500  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  501  	}
9152e0b722b290 Eddie Wai     2017-06-14  502  
9152e0b722b290 Eddie Wai     2017-06-14  503  	/* Register MR */
9152e0b722b290 Eddie Wai     2017-06-14  504  	mr->ib_mr.lkey = mr->qplib_mr.lkey;
9152e0b722b290 Eddie Wai     2017-06-14  505  	mr->qplib_mr.va = (u64)(unsigned long)fence->va;
9152e0b722b290 Eddie Wai     2017-06-14  506  	mr->qplib_mr.total_size = BNXT_RE_FENCE_BYTES;
9152e0b722b290 Eddie Wai     2017-06-14  507  	pbl_tbl = dma_addr;
a37827df6f226e Selvin Xavier 2021-01-06  508  	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, NULL,
a37827df6f226e Selvin Xavier 2021-01-06  509  			       BNXT_RE_FENCE_PBL_SIZE, PAGE_SIZE);
9152e0b722b290 Eddie Wai     2017-06-14  510  	if (rc) {
6ccad8483b2866 Devesh Sharma 2020-02-15  511  		ibdev_err(&rdev->ibdev, "Failed to register fence-MR\n");
9152e0b722b290 Eddie Wai     2017-06-14  512  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  513  	}
9152e0b722b290 Eddie Wai     2017-06-14  514  	mr->ib_mr.rkey = mr->qplib_mr.rkey;
9152e0b722b290 Eddie Wai     2017-06-14  515  
9152e0b722b290 Eddie Wai     2017-06-14  516  	/* Create a fence MW only for kernel consumers */
9152e0b722b290 Eddie Wai     2017-06-14  517  	mw = bnxt_re_alloc_mw(&pd->ib_pd, IB_MW_TYPE_1, NULL);
653f0a71daf1a7 Dan Carpenter 2017-07-10  518  	if (IS_ERR(mw)) {
6ccad8483b2866 Devesh Sharma 2020-02-15  519  		ibdev_err(&rdev->ibdev,
9152e0b722b290 Eddie Wai     2017-06-14  520  			  "Failed to create fence-MW for PD: %p\n", pd);
653f0a71daf1a7 Dan Carpenter 2017-07-10  521  		rc = PTR_ERR(mw);
9152e0b722b290 Eddie Wai     2017-06-14  522  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  523  	}
9152e0b722b290 Eddie Wai     2017-06-14  524  	fence->mw = mw;
9152e0b722b290 Eddie Wai     2017-06-14  525  
9152e0b722b290 Eddie Wai     2017-06-14  526  	bnxt_re_create_fence_wqe(pd);
9152e0b722b290 Eddie Wai     2017-06-14  527  	return 0;
9152e0b722b290 Eddie Wai     2017-06-14  528  
9152e0b722b290 Eddie Wai     2017-06-14  529  fail:
9152e0b722b290 Eddie Wai     2017-06-14  530  	bnxt_re_destroy_fence_mr(pd);
9152e0b722b290 Eddie Wai     2017-06-14  531  	return rc;
9152e0b722b290 Eddie Wai     2017-06-14  532  }
9152e0b722b290 Eddie Wai     2017-06-14  533  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 62704 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH for-next 1/2] RDMA/bnxt_re: Code refactor while populating user MRs
@ 2021-01-07  8:03     ` kernel test robot
  0 siblings, 0 replies; 5+ messages in thread
From: kernel test robot @ 2021-01-07  8:03 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 7497 bytes --]

Hi Selvin,

I love your patch! Perhaps something to improve:

[auto build test WARNING on rdma/for-next]
[also build test WARNING on v5.11-rc2 next-20210104]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch]

url:    https://github.com/0day-ci/linux/commits/Selvin-Xavier/RDMA-bnxt_re-Allow-bigger-user-MRs/20210107-145124
base:   https://git.kernel.org/pub/scm/linux/kernel/git/rdma/rdma.git for-next
config: ia64-allmodconfig (attached as .config)
compiler: ia64-linux-gcc (GCC) 9.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/a37827df6f226ed7b3fd1a3ccc4c47f5b893adf9
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Selvin-Xavier/RDMA-bnxt_re-Allow-bigger-user-MRs/20210107-145124
        git checkout a37827df6f226ed7b3fd1a3ccc4c47f5b893adf9
        # save the attached .config to linux build tree
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-9.3.0 make.cross ARCH=ia64 

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All warnings (new ones prefixed by >>):

   drivers/infiniband/hw/bnxt_re/ib_verbs.c: In function 'bnxt_re_create_fence_mr':
>> drivers/infiniband/hw/bnxt_re/ib_verbs.c:472:6: warning: variable 'pbl_tbl' set but not used [-Wunused-but-set-variable]
     472 |  u64 pbl_tbl;
         |      ^~~~~~~

Kconfig warnings: (for reference only)
   WARNING: unmet direct dependencies detected for FRAME_POINTER
   Depends on DEBUG_KERNEL && (M68K || UML || SUPERH) || ARCH_WANT_FRAME_POINTERS
   Selected by
   - FAULT_INJECTION_STACKTRACE_FILTER && FAULT_INJECTION_DEBUG_FS && STACKTRACE_SUPPORT && !X86_64 && !MIPS && !PPC && !S390 && !MICROBLAZE && !ARM && !ARC && !X86


vim +/pbl_tbl +472 drivers/infiniband/hw/bnxt_re/ib_verbs.c

9152e0b722b290 Eddie Wai     2017-06-14  462  
9152e0b722b290 Eddie Wai     2017-06-14  463  static int bnxt_re_create_fence_mr(struct bnxt_re_pd *pd)
9152e0b722b290 Eddie Wai     2017-06-14  464  {
9152e0b722b290 Eddie Wai     2017-06-14  465  	int mr_access_flags = IB_ACCESS_LOCAL_WRITE | IB_ACCESS_MW_BIND;
9152e0b722b290 Eddie Wai     2017-06-14  466  	struct bnxt_re_fence_data *fence = &pd->fence;
9152e0b722b290 Eddie Wai     2017-06-14  467  	struct bnxt_re_dev *rdev = pd->rdev;
9152e0b722b290 Eddie Wai     2017-06-14  468  	struct device *dev = &rdev->en_dev->pdev->dev;
9152e0b722b290 Eddie Wai     2017-06-14  469  	struct bnxt_re_mr *mr = NULL;
9152e0b722b290 Eddie Wai     2017-06-14  470  	dma_addr_t dma_addr = 0;
9152e0b722b290 Eddie Wai     2017-06-14  471  	struct ib_mw *mw;
9152e0b722b290 Eddie Wai     2017-06-14 @472  	u64 pbl_tbl;
9152e0b722b290 Eddie Wai     2017-06-14  473  	int rc;
9152e0b722b290 Eddie Wai     2017-06-14  474  
9152e0b722b290 Eddie Wai     2017-06-14  475  	dma_addr = dma_map_single(dev, fence->va, BNXT_RE_FENCE_BYTES,
9152e0b722b290 Eddie Wai     2017-06-14  476  				  DMA_BIDIRECTIONAL);
9152e0b722b290 Eddie Wai     2017-06-14  477  	rc = dma_mapping_error(dev, dma_addr);
9152e0b722b290 Eddie Wai     2017-06-14  478  	if (rc) {
6ccad8483b2866 Devesh Sharma 2020-02-15  479  		ibdev_err(&rdev->ibdev, "Failed to dma-map fence-MR-mem\n");
9152e0b722b290 Eddie Wai     2017-06-14  480  		rc = -EIO;
9152e0b722b290 Eddie Wai     2017-06-14  481  		fence->dma_addr = 0;
9152e0b722b290 Eddie Wai     2017-06-14  482  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  483  	}
9152e0b722b290 Eddie Wai     2017-06-14  484  	fence->dma_addr = dma_addr;
9152e0b722b290 Eddie Wai     2017-06-14  485  
9152e0b722b290 Eddie Wai     2017-06-14  486  	/* Allocate a MR */
9152e0b722b290 Eddie Wai     2017-06-14  487  	mr = kzalloc(sizeof(*mr), GFP_KERNEL);
9152e0b722b290 Eddie Wai     2017-06-14  488  	if (!mr) {
9152e0b722b290 Eddie Wai     2017-06-14  489  		rc = -ENOMEM;
9152e0b722b290 Eddie Wai     2017-06-14  490  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  491  	}
9152e0b722b290 Eddie Wai     2017-06-14  492  	fence->mr = mr;
9152e0b722b290 Eddie Wai     2017-06-14  493  	mr->rdev = rdev;
9152e0b722b290 Eddie Wai     2017-06-14  494  	mr->qplib_mr.pd = &pd->qplib_pd;
9152e0b722b290 Eddie Wai     2017-06-14  495  	mr->qplib_mr.type = CMDQ_ALLOCATE_MRW_MRW_FLAGS_PMR;
9152e0b722b290 Eddie Wai     2017-06-14  496  	mr->qplib_mr.flags = __from_ib_access_flags(mr_access_flags);
9152e0b722b290 Eddie Wai     2017-06-14  497  	rc = bnxt_qplib_alloc_mrw(&rdev->qplib_res, &mr->qplib_mr);
9152e0b722b290 Eddie Wai     2017-06-14  498  	if (rc) {
6ccad8483b2866 Devesh Sharma 2020-02-15  499  		ibdev_err(&rdev->ibdev, "Failed to alloc fence-HW-MR\n");
9152e0b722b290 Eddie Wai     2017-06-14  500  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  501  	}
9152e0b722b290 Eddie Wai     2017-06-14  502  
9152e0b722b290 Eddie Wai     2017-06-14  503  	/* Register MR */
9152e0b722b290 Eddie Wai     2017-06-14  504  	mr->ib_mr.lkey = mr->qplib_mr.lkey;
9152e0b722b290 Eddie Wai     2017-06-14  505  	mr->qplib_mr.va = (u64)(unsigned long)fence->va;
9152e0b722b290 Eddie Wai     2017-06-14  506  	mr->qplib_mr.total_size = BNXT_RE_FENCE_BYTES;
9152e0b722b290 Eddie Wai     2017-06-14  507  	pbl_tbl = dma_addr;
a37827df6f226e Selvin Xavier 2021-01-06  508  	rc = bnxt_qplib_reg_mr(&rdev->qplib_res, &mr->qplib_mr, NULL,
a37827df6f226e Selvin Xavier 2021-01-06  509  			       BNXT_RE_FENCE_PBL_SIZE, PAGE_SIZE);
9152e0b722b290 Eddie Wai     2017-06-14  510  	if (rc) {
6ccad8483b2866 Devesh Sharma 2020-02-15  511  		ibdev_err(&rdev->ibdev, "Failed to register fence-MR\n");
9152e0b722b290 Eddie Wai     2017-06-14  512  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  513  	}
9152e0b722b290 Eddie Wai     2017-06-14  514  	mr->ib_mr.rkey = mr->qplib_mr.rkey;
9152e0b722b290 Eddie Wai     2017-06-14  515  
9152e0b722b290 Eddie Wai     2017-06-14  516  	/* Create a fence MW only for kernel consumers */
9152e0b722b290 Eddie Wai     2017-06-14  517  	mw = bnxt_re_alloc_mw(&pd->ib_pd, IB_MW_TYPE_1, NULL);
653f0a71daf1a7 Dan Carpenter 2017-07-10  518  	if (IS_ERR(mw)) {
6ccad8483b2866 Devesh Sharma 2020-02-15  519  		ibdev_err(&rdev->ibdev,
9152e0b722b290 Eddie Wai     2017-06-14  520  			  "Failed to create fence-MW for PD: %p\n", pd);
653f0a71daf1a7 Dan Carpenter 2017-07-10  521  		rc = PTR_ERR(mw);
9152e0b722b290 Eddie Wai     2017-06-14  522  		goto fail;
9152e0b722b290 Eddie Wai     2017-06-14  523  	}
9152e0b722b290 Eddie Wai     2017-06-14  524  	fence->mw = mw;
9152e0b722b290 Eddie Wai     2017-06-14  525  
9152e0b722b290 Eddie Wai     2017-06-14  526  	bnxt_re_create_fence_wqe(pd);
9152e0b722b290 Eddie Wai     2017-06-14  527  	return 0;
9152e0b722b290 Eddie Wai     2017-06-14  528  
9152e0b722b290 Eddie Wai     2017-06-14  529  fail:
9152e0b722b290 Eddie Wai     2017-06-14  530  	bnxt_re_destroy_fence_mr(pd);
9152e0b722b290 Eddie Wai     2017-06-14  531  	return rc;
9152e0b722b290 Eddie Wai     2017-06-14  532  }
9152e0b722b290 Eddie Wai     2017-06-14  533  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 62704 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-01-07  8:04 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-07  6:39 [PATCH for-next 0/2] RDMA/bnxt_re: Allow bigger user MRs Selvin Xavier
2021-01-07  6:39 ` [PATCH for-next 1/2] RDMA/bnxt_re: Code refactor while populating " Selvin Xavier
2021-01-07  8:03   ` kernel test robot
2021-01-07  8:03     ` kernel test robot
2021-01-07  6:39 ` [PATCH for-next 2/2] RDMA/bnxt_re: Allow bigger MR creation Selvin Xavier

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.