| From: |
| Sriharsha Basavapatna <sriharsha.basavapatna-AT-broadcom.com> |
| To: |
| leon-AT-kernel.org, jgg-AT-ziepe.ca |
| Subject: |
| [PATCH rdma-next v9 0/5] RDMA/bnxt_re: Support direct verbs |
| Date: |
| Tue, 27 Jan 2026 16:01:04 +0530 |
| Message-ID: |
| <20260127103109.32163-1-sriharsha.basavapatna@broadcom.com> |
| Cc: |
| linux-rdma-AT-vger.kernel.org, andrew.gospodarek-AT-broadcom.com, selvin.xavier-AT-broadcom.com, kalesh-anakkur.purayil-AT-broadcom.com, Sriharsha Basavapatna <sriharsha.basavapatna-AT-broadcom.com> |
| Archive-link: |
| Article |
Hi,
This patchset supports Direct Verbs in the bnxt_re driver.
This is required by vendor specific applications that need to manage
the HW resources directly and to implement the datapath in the
application.
To support this, the library and the driver are being enhanced to
provide Direct Verbs using which the application can allocate and
manage the HW resources (Queues, Doorbell etc) . The Direct Verbs
enable the application to implement the control path.
Patch#1 Uverbs support for user allocated QP mem
Patch#2 Move uapi methods to a separate file
Patch#3 Refactor existing bnxt_qplib_create_qp() function
Patch#4 Support dbr direct verbs
Patch#5 Support cq and qp direct verbs
Thanks,
-Harsha
******
Changes:
v9:
- Added a new uverbs patch (#1) in RDMA core.
- Supports user/app allocated memory for QP.
- Updated Patch#5 (cq/qp) to utilize umem dev op.
- Updated driver ABI file (deleted dmabuf_fd/len fields).
v8:
- Patch#3:
- Removed dpi_hash table (and lock/rcu).
- Renamed bnxt_re_alloc_dbr_obj->bnxt_re_dbr_obj.
- Added an atomic usecnt in dbr_obj.
- Patch#4:
- Registered a driver specific attribute for dbr_handle.
- Process dbr_handle during QP creation.
- Added refcnt logic to avoid dbr deletion with active QPs.
- Reverted dpi hash table lookup and related code.
- Removed dpi from req_qp ABI.
- Added ib_umem_find_best_pgsz() in umem processing.
- Added a wrapper function for dv_cq deletion.
v7:
- Patch#3:
- DBR_OFFSET attribute changed to PTR_OUT.
- Added a reserved field in struct bnxt_re_dv_db_region.
- Reordered sequence in DBR_ALLOC (hash_add -> uverbs_finalize).
- Synchronized access to dpi hash table.
- Patch#4:
- Changed dmabuf_fd type (u32->s32) in ABI.
- Changed num_dma_blocks() arg from PAGE_SIZE to SZ_4K.
- Fixed atomic read/inc race window in bnxt_re_dv_create_qplib_cq().
- Deleted bnxt_re_dv_init_ib_cq().
v6:
- Minor updates in Patch#3:
- Removed unused variables.
- Renamed & updated a uverbs method to a global.
- Minor updates in Patch#4:
- Removed unused variables, stray hunks.
v5:
- Design changes to address previous round of comments:
- Reverted changes in rdma-core (removed V4-Patch#1).
- Removed driver support for umem-reg/dereg DVs (Patch#3).
- Enhanced driver specific udata to avoid new CQ/QP ioctls (Patch#4).
- Removed additional driver functions in modify/query QP (Patch#4).
- Utilized queue-va in udata for deferred pinning (Patch#4).
v4:
- Added a new (rdma core) patch.
- Addressed code review comments in patch 5.
v3:
- Addressed code review comments in patches 1, 2 and 4.
v2:
- Fixed build warnings reported by test robot in patches 3 and 4.
v8: https://lore.kernel.org/linux-rdma/20260117080052.43279-1...
v7: https://lore.kernel.org/linux-rdma/20260113170956.103779-...
v6: https://lore.kernel.org/linux-rdma/20251224042602.56255-1...
v5: https://lore.kernel.org/linux-rdma/20251129165441.75274-1...
v4: https://lore.kernel.org/linux-rdma/20251117061741.15752-1...
v3: https://lore.kernel.org/linux-rdma/20251110145628.290296-...
v2: https://lore.kernel.org/linux-rdma/20251104072320.210596-...
v1: https://lore.kernel.org/linux-rdma/20251103105033.205586-...
******
Jiri Pirko (1):
RDMA/uverbs: Support QP creation with user allocated memory
Kalesh AP (3):
RDMA/bnxt_re: Move the UAPI methods to a dedicated file
RDMA/bnxt_re: Refactor bnxt_qplib_create_qp() function
RDMA/bnxt_re: Direct Verbs: Support DBR verbs
Sriharsha Basavapatna (1):
RDMA/bnxt_re: Direct Verbs: Support CQ and QP verbs
drivers/infiniband/core/device.c | 1 +
drivers/infiniband/core/uverbs_std_types_qp.c | 157 ++-
drivers/infiniband/hw/bnxt_re/Makefile | 2 +-
drivers/infiniband/hw/bnxt_re/bnxt_re.h | 6 +
drivers/infiniband/hw/bnxt_re/dv.c | 916 ++++++++++++++++++
drivers/infiniband/hw/bnxt_re/ib_verbs.c | 663 ++++++-------
drivers/infiniband/hw/bnxt_re/ib_verbs.h | 30 +
drivers/infiniband/hw/bnxt_re/main.c | 2 +
drivers/infiniband/hw/bnxt_re/qplib_fp.c | 310 ++----
drivers/infiniband/hw/bnxt_re/qplib_fp.h | 10 +-
drivers/infiniband/hw/bnxt_re/qplib_res.c | 43 +
drivers/infiniband/hw/bnxt_re/qplib_res.h | 10 +
include/rdma/ib_verbs.h | 4 +
include/uapi/rdma/bnxt_re-abi.h | 44 +
include/uapi/rdma/ib_user_ioctl_cmds.h | 8 +
15 files changed, 1628 insertions(+), 578 deletions(-)
create mode 100644 drivers/infiniband/hw/bnxt_re/dv.c
--
2.51.2.636.ga99f379adf