* [PATCH rdma-next] RDMA/bnxt_re: Update create_qp to use QP buffer umem attrs
@ 2026-06-02 14:56 Sriharsha Basavapatna
2026-06-05 16:08 ` Jason Gunthorpe
0 siblings, 1 reply; 2+ messages in thread
From: Sriharsha Basavapatna @ 2026-06-02 14:56 UTC (permalink / raw)
To: leon, jgg
Cc: linux-rdma, andrew.gospodarek, selvin.xvier,
kalesh-anakkur.purayil, Sriharsha Basavapatna, Selvin Xavier
Use ib_umem_get_attr_or_va() helper to pin QP buffer umems.
Pass attribute ids SQ_BUF_UMEM and RQ_BUF_UMEM for respective
buffers.
Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com>
---
drivers/infiniband/hw/bnxt_re/ib_verbs.c | 22 +++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)
diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
index c1c4ddc615e2..f389fc0471e6 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
@@ -1195,7 +1195,8 @@ static int bnxt_re_init_user_qp(struct bnxt_re_dev *rdev, struct bnxt_re_pd *pd,
struct bnxt_re_qp *qp, struct bnxt_re_ucontext *cntx,
struct bnxt_re_qp_req *ureq,
bool fixed_que_attr,
- struct bnxt_re_dbr_obj *dbr_obj)
+ struct bnxt_re_dbr_obj *dbr_obj,
+ struct uverbs_attr_bundle *attrs)
{
struct bnxt_qplib_qp *qplib_qp;
struct ib_umem *umem;
@@ -1210,8 +1211,9 @@ static int bnxt_re_init_user_qp(struct bnxt_re_dev *rdev, struct bnxt_re_pd *pd,
bytes += bnxt_re_get_psn_bytes(rdev, cntx, qplib_qp, ureq, fixed_que_attr);
bytes = PAGE_ALIGN(bytes);
- umem = ib_umem_get_va(&rdev->ibdev, ureq->qpsva, bytes,
- IB_ACCESS_LOCAL_WRITE);
+ umem = ib_umem_get_attr_or_va(&rdev->ibdev, attrs,
+ UVERBS_ATTR_CREATE_QP_SQ_BUF_UMEM,
+ ureq->qpsva, bytes, IB_ACCESS_LOCAL_WRITE);
if (IS_ERR(umem))
return PTR_ERR(umem);
@@ -1225,8 +1227,9 @@ static int bnxt_re_init_user_qp(struct bnxt_re_dev *rdev, struct bnxt_re_pd *pd,
bytes = (qplib_qp->rq.max_wqe * qplib_qp->rq.wqe_size);
bytes = PAGE_ALIGN(bytes);
- umem = ib_umem_get_va(&rdev->ibdev, ureq->qprva, bytes,
- IB_ACCESS_LOCAL_WRITE);
+ umem = ib_umem_get_attr_or_va(&rdev->ibdev, attrs,
+ UVERBS_ATTR_CREATE_QP_RQ_BUF_UMEM,
+ ureq->qprva, bytes, IB_ACCESS_LOCAL_WRITE);
if (IS_ERR(umem)) {
rc = PTR_ERR(umem);
goto fail;
@@ -1718,7 +1721,8 @@ static int bnxt_re_init_qp_attr(struct bnxt_re_qp *qp, struct bnxt_re_pd *pd,
struct bnxt_re_ucontext *uctx,
struct bnxt_re_qp_req *ureq,
struct bnxt_re_dbr_obj *dbr_obj,
- bool fixed_que_attr)
+ bool fixed_que_attr,
+ struct uverbs_attr_bundle *attrs)
{
struct bnxt_qplib_dev_attr *dev_attr;
struct bnxt_qplib_qp *qplqp;
@@ -1792,7 +1796,7 @@ static int bnxt_re_init_qp_attr(struct bnxt_re_qp *qp, struct bnxt_re_pd *pd,
if (uctx) { /* This will update DPI and qp_handle */
rc = bnxt_re_init_user_qp(rdev, pd, qp, uctx, ureq, fixed_que_attr,
- dbr_obj);
+ dbr_obj, attrs);
if (rc)
return rc;
}
@@ -1928,9 +1932,9 @@ static int bnxt_re_add_unique_gid(struct bnxt_re_dev *rdev)
int bnxt_re_create_qp(struct ib_qp *ib_qp, struct ib_qp_init_attr *qp_init_attr,
struct ib_udata *udata)
{
+ struct uverbs_attr_bundle *attrs = NULL;
struct bnxt_re_dbr_obj *dbr_obj = NULL;
struct bnxt_qplib_dev_attr *dev_attr;
- struct uverbs_attr_bundle *attrs;
struct bnxt_re_ucontext *uctx;
bool fixed_que_attr = false;
struct bnxt_re_qp_req ureq;
@@ -1976,7 +1980,7 @@ int bnxt_re_create_qp(struct ib_qp *ib_qp, struct ib_qp_init_attr *qp_init_attr,
qp->rdev = rdev;
rc = bnxt_re_init_qp_attr(qp, pd, qp_init_attr, uctx, &ureq,
- dbr_obj, fixed_que_attr);
+ dbr_obj, fixed_que_attr, attrs);
if (rc)
goto fail;
--
2.51.2.636.ga99f379adf
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH rdma-next] RDMA/bnxt_re: Update create_qp to use QP buffer umem attrs
2026-06-02 14:56 [PATCH rdma-next] RDMA/bnxt_re: Update create_qp to use QP buffer umem attrs Sriharsha Basavapatna
@ 2026-06-05 16:08 ` Jason Gunthorpe
0 siblings, 0 replies; 2+ messages in thread
From: Jason Gunthorpe @ 2026-06-05 16:08 UTC (permalink / raw)
To: Sriharsha Basavapatna
Cc: leon, linux-rdma, andrew.gospodarek, selvin.xvier,
kalesh-anakkur.purayil, Selvin Xavier
On Tue, Jun 02, 2026 at 08:26:18PM +0530, Sriharsha Basavapatna wrote:
> Use ib_umem_get_attr_or_va() helper to pin QP buffer umems.
> Pass attribute ids SQ_BUF_UMEM and RQ_BUF_UMEM for respective
> buffers.
>
> Signed-off-by: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
> Reviewed-by: Selvin Xavier <selvin.xavier@broadcom.com>
> ---
> drivers/infiniband/hw/bnxt_re/ib_verbs.c | 22 +++++++++++++---------
> 1 file changed, 13 insertions(+), 9 deletions(-)
Applied, but please read the sashiko report and send a patch fixing
all the maths overflows in this driver for the uapi. Any maths from a
udata should be done with checked arithmetic.
Jason
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-06-05 16:08 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-02 14:56 [PATCH rdma-next] RDMA/bnxt_re: Update create_qp to use QP buffer umem attrs Sriharsha Basavapatna
2026-06-05 16:08 ` Jason Gunthorpe
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox