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