mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [PATCH 00/11] Subject: [PATCH for-next 00/11] RDMA/cxi: add the HPE Cassini verbs driver
@ 2026-10-31  4:35 Doug Ledford
  2026-10-31  4:35 ` [PATCH 01/11] RDMA/core: read selected counters with timestamps Doug Ledford
                   ` (11 more replies)
  0 siblings, 12 replies; 14+ messages in thread
From: Doug Ledford @ 2026-10-31  4:35 UTC (permalink / raw)
  To: Jason Gunthorpe, Leon Romanovsky, Slingshot Open Source Team
  Cc: linux-rdma, linux-kernel, Doug Ledford, Iraimani P, Mamila Santosh

This series adds cxiverbs, an RDMA driver for the HPE Slingshot Cassini
NIC. It exposes the NIC through the verbs API using the UET reliable
unconnected (RU) queue pair type from the UET RDMA core series.

cxiverbs does not drive the hardware itself. It is an auxiliary bus
client of the cxi-ss1 Cassini core driver and does everything through
that driver's exported CXI interface.

Patches 1-3 extend the RDMA core:

 - read selected counters, with per-item timestamps, through the
   COUNTERS object, so that a monitor can read a few of the NIC's
   thousands of telemetry values
 - allow UET jobs without an address table. Cassini transmit commands
   carry the destination fabric address directly and the hardware has
   no programmable peer-address table equivalent to the UET job table.
   This relaxes a rule in the UET core series and needs agreement from
   its authors; the commit message gives the hardware reasons.
 - add the Slingshot node type, transport, port capability and a
   driver-owned GID type that carries the 20-bit NID of the port

Patches 4-11 add the driver:

 - the user space ABI is built around explicit resource ownership:
   the CXI service, LNI (logical network interface) and PID are
   allocated explicitly through private uverbs methods instead of as a
   side effect of opening the device
 - VNI-isolated RU queue pairs, native memory registration, services,
   jobs, communication profiles, command and event queues, counting
   triggers, and NIC telemetry read through the counters extension

Dependencies
------------

This series depends on:

 - the Cassini NIC driver series for net-next,
   net: hpe: add HPE Slingshot NIC drivers
   https://lore.kernel.org/netdev/20261030-cxi-netdev-submission-v1-0-8c2c391cc283@hpe.com/
 - the UET RDMA core series
   RDMA/core: Ultra Ethernet transport verbs
   https://lore.kernel.org/linux-rdma/20261019-uet-ib-core-v2-0-8bd654f25370@broadcom.com/T/#t

The upcoming cxiverbs rdma-core provider pull request will depend on
this series.

Known open issues
-----------------

Every patch with a known unresolved issue says so in its commit
message. In summary:

 - SR-IOV: patches 9 and 10 carry virtual-function code from an older,
   incomplete version of the Cassini SR-IOV support. V2 will include the
   updated SR-IOV implementation, so please ignore issues in the VF
   paths for now.
 - Patch 9: on a physical function cxi_eq_free() cannot fail. On a
   virtual function it fails if the PF mailbox is unreachable. If that
   happens while the file is closed or the device is removed, the RDMA
   core drops the EQ object without native cleanup, so the VF EQ and its
   references leak. Explicit EQ destroys are retried. This will be fixed
   with the SR-IOV update in V2.

checkpatch
----------

Patches 1-3, 10 and 11 are checkpatch --strict clean. Patches 4-9 still
report CHECK-level items only (157 in total, mostly
PARENTHESIS_ALIGNMENT and OPEN_ENDED_LINE); each patch lists them. This
code is also maintained in internal HPE repositories, so these fixes
need coordination with those repositories and will be made in V2.

Review and testing
------------------

Before posting, the series was reviewed with the Sashiko AI code
review tool and checkpatch. All valid findings are fixed, except the
open items listed above.

Tool use: GitHub Copilot, an AI coding assistant, was used under our
direction to write many of the review fixes, to fold them into these
patches, to write commit messages and to run the build and hardware
tests. Every change was reviewed by the submitter, who takes
responsibility for it as for any other patch.

 - every patch builds incrementally, without compiler warnings, on top
   of the two series it depends on, with an x86_64 configuration that
   enables the driver
 - with this series, the netdev series and the rdma-core provider,
   booted on two Cassini 2 x86_64 nodes, the complete stack
   passed a full test matrix on both nodes: the rdma-core Python suite
   (434 tests; tests that need features this device lacks are
   skipped), resource and VNI isolation tests in default and indexed
   addressing modes, including wrong-VNI rejection, privileged and
   unprivileged CSR access tests, and 36 two-node RU ping-pong and RMA
   traffic cases (polling and event modes) in each direction, 72 in
   total. Native NIC resource accounting was identical before and
   after the traffic, no verbs references remained, and the kernel
   logs had no WARN, BUG or oops reports and no module load errors.
   The only later change is in the netdev series (cxi-eth hardware
   timestamp configuration), which was tested separately on hardware.
 - targeted user space models of the functions changed by the review
   fixes pass under AddressSanitizer and UndefinedBehaviorSanitizer.

Co-developed by Mamila Santosh and Iraimani P, as shown by the trailers
on each patch.

Doug Ledford (11):
  RDMA/core: read selected counters with timestamps
  RDMA/core: allow jobs without an address table
  RDMA/core: add Slingshot identifiers and driver-owned GIDs
  RDMA/cxi: add the native ABI and resource definitions
  RDMA/cxi: add the auxiliary device and driver ops
  RDMA/cxi: add explicit context LNI and PID lifetimes
  RDMA/cxi: add VNI-isolated queue pairs
  RDMA/cxi: add native memory registration
  RDMA/cxi: add services jobs profiles queues and counting triggers
  RDMA/cxi: read the NIC telemetry through counters
  RDMA/cxi: wire the driver into the build

 25 files changed, 5696 insertions(+), 7 deletions(-)

Signed-off-by: Doug Ledford <doug.ledford@hpe.com>
---
Doug Ledford (11):
      RDMA/core: read selected counters with timestamps
      RDMA/core: allow jobs without an address table
      RDMA/core: add Slingshot identifiers and driver-owned GIDs
      RDMA/cxi: add the native ABI and resource definitions
      RDMA/cxi: add the auxiliary device and driver ops
      RDMA/cxi: add explicit context LNI and PID lifetimes
      RDMA/cxi: add VNI-isolated queue pairs
      RDMA/cxi: add native memory registration
      RDMA/cxi: add services jobs profiles queues and counting triggers
      RDMA/cxi: read the NIC telemetry through counters
      RDMA/cxi: wire the driver into the build

 MAINTAINERS                                        |    9 +-
 drivers/infiniband/Kconfig                         |    1 +
 drivers/infiniband/core/cache.c                    |    3 +
 drivers/infiniband/core/device.c                   |    1 +
 drivers/infiniband/core/nldev.c                    |    3 +
 drivers/infiniband/core/roce_gid_mgmt.c            |    3 +
 drivers/infiniband/core/sysfs.c                    |    2 +
 .../infiniband/core/uverbs_std_types_counters.c    |   68 +-
 drivers/infiniband/core/uverbs_std_types_job.c     |    3 +-
 drivers/infiniband/core/verbs.c                    |    2 +
 drivers/infiniband/hw/Makefile                     |    1 +
 drivers/infiniband/hw/cxi/Kconfig                  |   11 +
 drivers/infiniband/hw/cxi/Makefile                 |    5 +
 drivers/infiniband/hw/cxi/cxiverbs.h               |  443 +++++
 drivers/infiniband/hw/cxi/cxiverbs_counters.c      |   38 +
 drivers/infiniband/hw/cxi/cxiverbs_ct.c            | 1906 ++++++++++++++++++++
 drivers/infiniband/hw/cxi/cxiverbs_drv.c           |  270 +++
 drivers/infiniband/hw/cxi/cxiverbs_main.c          | 1105 ++++++++++++
 drivers/infiniband/hw/cxi/cxiverbs_mr.c            |  192 ++
 drivers/infiniband/hw/cxi/cxiverbs_qp.c            |  949 ++++++++++
 include/rdma/ib_verbs.h                            |   25 +
 include/uapi/rdma/cxiverbs-abi.h                   |  658 +++++++
 include/uapi/rdma/ib_user_ioctl_cmds.h             |    2 +
 include/uapi/rdma/ib_user_ioctl_verbs.h            |    2 +
 include/uapi/rdma/rdma_netlink.h                   |    1 +
 25 files changed, 5696 insertions(+), 7 deletions(-)
---
base-commit: 306a2f8432f516069b2e673de7a07043132c034f
change-id: 20261030-cxi-for-next-8f50ba2bd59f

Best regards,
--  
Doug Ledford <doug.ledford@hpe.com>


^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2026-11-03 14:30 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-10-31  4:35 [PATCH 00/11] Subject: [PATCH for-next 00/11] RDMA/cxi: add the HPE Cassini verbs driver Doug Ledford
2026-10-31  4:35 ` [PATCH 01/11] RDMA/core: read selected counters with timestamps Doug Ledford
2026-10-31  4:35 ` [PATCH 02/11] RDMA/core: allow jobs without an address table Doug Ledford
2026-10-31  4:35 ` [PATCH 03/11] RDMA/core: add Slingshot identifiers and driver-owned GIDs Doug Ledford
2026-10-31  4:35 ` [PATCH 04/11] RDMA/cxi: add the native ABI and resource definitions Doug Ledford
2026-10-31  4:35 ` [PATCH 05/11] RDMA/cxi: add the auxiliary device and driver ops Doug Ledford
2026-10-31  4:35 ` [PATCH 06/11] RDMA/cxi: add explicit context LNI and PID lifetimes Doug Ledford
2026-10-31  4:35 ` [PATCH 07/11] RDMA/cxi: add VNI-isolated queue pairs Doug Ledford
2026-10-31  4:35 ` [PATCH 08/11] RDMA/cxi: add native memory registration Doug Ledford
2026-10-31  4:35 ` [PATCH 09/11] RDMA/cxi: add services jobs profiles queues and counting triggers Doug Ledford
2026-10-31  4:35 ` [PATCH 10/11] RDMA/cxi: read the NIC telemetry through counters Doug Ledford
2026-10-31  4:35 ` [PATCH 11/11] RDMA/cxi: wire the driver into the build Doug Ledford
2026-11-03 14:28 ` [PATCH 00/11] Subject: [PATCH for-next 00/11] RDMA/cxi: add the HPE Cassini verbs driver Leon Romanovsky
2026-11-03 14:30   ` Jason Gunthorpe

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®