From: Leon Romanovsky <leon@kernel.org>
To: Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
Cc: jgg@ziepe.ca, linux-rdma@vger.kernel.org,
andrew.gospodarek@broadcom.com, selvin.xavier@broadcom.com,
kalesh-anakkur.purayil@broadcom.com
Subject: Re: [PATCH rdma-next v12 5/6] RDMA/bnxt_re: Support dmabuf for CQ rings
Date: Fri, 13 Feb 2026 13:12:56 +0200 [thread overview]
Message-ID: <20260213111256.GO12887@unreal> (raw)
In-Reply-To: <20260211124927.57617-6-sriharsha.basavapatna@broadcom.com>
On Wed, Feb 11, 2026 at 06:19:26PM +0530, Sriharsha Basavapatna wrote:
> For CQs, kernel already supports pinning dmabuf based application
> memory, specified through provider attributes. Register a new devop
> for create_cq_umem() and process the umem argument. Refactor the
> existing create_cq() handler so that code is shared across both
> handlers.
>
> 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 | 30 +++++++++++++++++-------
> drivers/infiniband/hw/bnxt_re/ib_verbs.h | 2 ++
> drivers/infiniband/hw/bnxt_re/main.c | 1 +
> 3 files changed, 24 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> index 9fa89f330c5a..30aefbd0112e 100644
> --- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> +++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> @@ -3368,8 +3368,8 @@ static int bnxt_re_setup_sginfo(struct bnxt_re_dev *rdev,
> return 0;
> }
>
> -int bnxt_re_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
> - struct uverbs_attr_bundle *attrs)
> +int bnxt_re_create_cq_umem(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
> + struct ib_umem *umem, struct uverbs_attr_bundle *attrs)
> {
> struct bnxt_re_cq *cq = container_of(ibcq, struct bnxt_re_cq, ib_cq);
> struct bnxt_re_dev *rdev = to_bnxt_re_dev(ibcq->device, ibdev);
> @@ -3406,13 +3406,18 @@ int bnxt_re_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
> if (rc)
> goto fail;
>
> - cq->umem = ib_umem_get(&rdev->ibdev, req.cq_va,
> - entries * sizeof(struct cq_base),
> - IB_ACCESS_LOCAL_WRITE);
> - if (IS_ERR(cq->umem)) {
> - rc = PTR_ERR(cq->umem);
> - goto fail;
> + if (umem) {
> + cq->umem = umem;
> + } else {
> + cq->umem = ib_umem_get(&rdev->ibdev, req.cq_va,
> + entries * sizeof(struct cq_base),
> + IB_ACCESS_LOCAL_WRITE);
> + if (IS_ERR(cq->umem)) {
> + rc = PTR_ERR(cq->umem);
> + goto fail;
> + }
> }
> +
> rc = bnxt_re_setup_sginfo(rdev, cq->umem, &cq->qplib_cq.sg_info);
> if (rc)
> goto fail;
> @@ -3480,12 +3485,19 @@ int bnxt_re_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
> free_mem:
> free_page((unsigned long)cq->uctx_cq_page);
> c2fail:
> - ib_umem_release(cq->umem);
> + if (!umem)
> + ib_umem_release(cq->umem);
> fail:
> kfree(cq->cql);
> return rc;
> }
>
> +int bnxt_re_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
> + struct uverbs_attr_bundle *attrs)
> +{
> + return bnxt_re_create_cq_umem(ibcq, attr, NULL, attrs);
> +}
Please don't mix create_cq and create_cq_umem.
https://lore.kernel.org/linux-rdma/20260213-refactor-umem-v1-15-f3be85847922@nvidia.com/T/#u
Thanks
> +
> static void bnxt_re_resize_cq_complete(struct bnxt_re_cq *cq)
> {
> struct bnxt_re_dev *rdev = cq->rdev;
> diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.h b/drivers/infiniband/hw/bnxt_re/ib_verbs.h
> index 33e0f66b39eb..27cbe9a1c7e1 100644
> --- a/drivers/infiniband/hw/bnxt_re/ib_verbs.h
> +++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.h
> @@ -254,6 +254,8 @@ int bnxt_re_post_recv(struct ib_qp *qp, const struct ib_recv_wr *recv_wr,
> const struct ib_recv_wr **bad_recv_wr);
> int bnxt_re_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
> struct uverbs_attr_bundle *attrs);
> +int bnxt_re_create_cq_umem(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
> + struct ib_umem *umem, struct uverbs_attr_bundle *attrs);
> int bnxt_re_resize_cq(struct ib_cq *ibcq, int cqe, struct ib_udata *udata);
> int bnxt_re_destroy_cq(struct ib_cq *cq, struct ib_udata *udata);
> int bnxt_re_poll_cq(struct ib_cq *cq, int num_entries, struct ib_wc *wc);
> diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
> index 73003ad25ee8..401a481afecc 100644
> --- a/drivers/infiniband/hw/bnxt_re/main.c
> +++ b/drivers/infiniband/hw/bnxt_re/main.c
> @@ -1334,6 +1334,7 @@ static const struct ib_device_ops bnxt_re_dev_ops = {
> .alloc_ucontext = bnxt_re_alloc_ucontext,
> .create_ah = bnxt_re_create_ah,
> .create_cq = bnxt_re_create_cq,
> + .create_cq_umem = bnxt_re_create_cq_umem,
> .create_qp = bnxt_re_create_qp,
> .create_srq = bnxt_re_create_srq,
> .create_user_ah = bnxt_re_create_ah,
> --
> 2.51.2.636.ga99f379adf
>
next prev parent reply other threads:[~2026-02-13 11:13 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-11 12:49 [PATCH rdma-next v12 0/6] RDMA/bnxt_re: Support uapi extensions Sriharsha Basavapatna
2026-02-11 12:49 ` [PATCH rdma-next v12 1/6] RDMA/bnxt_re: Move the UAPI methods to a dedicated file Sriharsha Basavapatna
2026-02-11 12:49 ` [PATCH rdma-next v12 2/6] RDMA/bnxt_re: Refactor bnxt_qplib_create_qp() function Sriharsha Basavapatna
2026-02-11 12:49 ` [PATCH rdma-next v12 3/6] RDMA/bnxt_re: Support doorbell extensions Sriharsha Basavapatna
2026-02-11 12:49 ` [PATCH rdma-next v12 4/6] RDMA/bnxt_re: Refactor bnxt_re_create_cq() Sriharsha Basavapatna
2026-02-11 12:49 ` [PATCH rdma-next v12 5/6] RDMA/bnxt_re: Support dmabuf for CQ rings Sriharsha Basavapatna
2026-02-13 11:12 ` Leon Romanovsky [this message]
2026-02-13 14:54 ` Jason Gunthorpe
2026-02-13 15:03 ` Sriharsha Basavapatna
2026-02-15 7:07 ` Leon Romanovsky
2026-02-13 16:18 ` Leon Romanovsky
2026-02-13 16:22 ` Leon Romanovsky
2026-02-16 15:00 ` Sriharsha Basavapatna
2026-02-16 19:40 ` Leon Romanovsky
2026-02-11 12:49 ` [PATCH rdma-next v12 6/6] RDMA/bnxt_re: Support application specific CQs Sriharsha Basavapatna
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260213111256.GO12887@unreal \
--to=leon@kernel.org \
--cc=andrew.gospodarek@broadcom.com \
--cc=jgg@ziepe.ca \
--cc=kalesh-anakkur.purayil@broadcom.com \
--cc=linux-rdma@vger.kernel.org \
--cc=selvin.xavier@broadcom.com \
--cc=sriharsha.basavapatna@broadcom.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox