* [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.