From: Doug Ledford <doug.ledford@hpe.com>
To: Jason Gunthorpe <jgg@ziepe.ca>, Leon Romanovsky <leon@kernel.org>,
Slingshot Open Source Team <slingshot-os-team@groups.ext.hpe.com>
Cc: <linux-rdma@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
Doug Ledford <doug.ledford@hpe.com>,
Iraimani P <iraimani.pavadai@hpe.com>,
Mamila Santosh <santosh-kumar.mamila@hpe.com>
Subject: [PATCH 00/11] Subject: [PATCH for-next 00/11] RDMA/cxi: add the HPE Cassini verbs driver
Date: Fri, 30 Oct 2026 21:35:28 -0700 [thread overview]
Message-ID: <20261030-cxi-for-next-v1-0-bc6e49e07037@hpe.com> (raw)
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>
next reply other threads:[~2026-10-31 4:36 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-31 4:35 Doug Ledford [this message]
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
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=20261030-cxi-for-next-v1-0-bc6e49e07037@hpe.com \
--to=doug.ledford@hpe.com \
--cc=iraimani.pavadai@hpe.com \
--cc=jgg@ziepe.ca \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=santosh-kumar.mamila@hpe.com \
--cc=slingshot-os-team@groups.ext.hpe.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
all inboxes | Powered by JetHome®