From: Eric Davis via B4 Relay <devnull+eric.davis.broadcom.com@kernel.org>
To: Jason Gunthorpe <jgg@ziepe.ca>, Leon Romanovsky <leon@kernel.org>
Cc: linux-rdma@vger.kernel.org, linux-kernel@vger.kernel.org,
Eric Davis <eric.davis@broadcom.com>
Subject: [PATCH rdma-next v3 00/13] RDMA/core: Ultra Ethernet transport verbs
Date: Mon, 09 Nov 2026 20:00:33 -0800 [thread overview]
Message-ID: <20261109-uet-ib-core-v3-0-3e7e7ffed2e9@broadcom.com> (raw)
Ultra Ethernet defines a reliable unconnected transport. A queue pair
sends to any peer in its job without a connection, incoming traffic is
demultiplexed on a JobID rather than on a connection, and what a device
orders is far weaker than IB or RoCE and varies between devices. None of
that has a home in the current uverbs ABI.
This series adds the generic half. The objects, methods, and attributes
any UET device implements. No driver is part of it, though two already
exist against this ABI. A reference device model that implements all of
it, and HPE's Slingshot driver implementing a large subset. That is the
argument for ib_core carrying this. What is device specific should come
from private interfaces per vendor.
Patch 1 widens the uverbs object key. The three new core objects would
otherwise leave drivers fewer object keys than mlx5 alone uses.
Patches 2-4 expose the transport. The two UET encapsulations as GID
types, the capabilities and limits a device advertises, and IB_QPT_RU
with its 32-bit queue pair number.
Patch 5 widens address handles, which an unconnected peer needs since
it is named by both a network address and a queue pair number.
Patch 6 adds a query for what a queue pair type actually orders.
Patch 7 adds jobs and job keys, the objects an unconnected transport
demultiplexes and authorizes on. A job can be exported to a file
descriptor, so an unprivileged process can join one set up for it.
Patches 8-10 let a queue pair be created ready to send, since a
transport with nothing to negotiate gains nothing from the modify
sequence. Patch 8 is a no-functional-change refactor pulling the
attribute copy out of modify_qp. Patch 9 lets create take those
attributes. Patch 10 adds the attributes a reliable unconnected
transport needs.
Patches 11-13 cover memory registration with a job binding, a chosen
key, derived regions, 64-bit keys for devices whose keys do not fit
in 32 bits, and attaching a region to one queue pair so the network
reaches it only over that QP.
New attributes are optional, so existing userspace is unaffected and a
device without a feature reports it absent rather than failing. The
attributes that restrict access are sent mandatory by userspace, so a
kernel that does not know one refuses the request rather than creating
an object with less protection than was asked for.
Tested against a reference device implementing the ABI, and against rxe
to confirm nothing already upstream regressed. The userspace half is a
matching rdma-core series.
Signed-off-by: Eric Davis <eric.davis@broadcom.com>
---
Changes in v3:
- Rebase on rdma for-next
- Never default RDMA-CM to a UET GID type (2)
- Refuse an RU QP whose number another QP on the device already has,
until restrack keys RU QPs by more than their number (4)
- Call uverbs_finalize_uobj_create() in AH_EX_CREATE (5), JOB_ALLOC
and JOB_IMPORT (7)
- Refuse reserved bits in a remote QPN (5, 7)
- Report only the semantics fields and bits uverbs defines, and refuse
the driver QP type (6)
- Keep a job's address entries on its port, and refuse an import once
the exporting context is gone (7)
- Release a queried address entry's sgid_attr when the query fails (7)
- Keep the early attr_mask check in ex_modify_qp (8)
- Refuse an RU QP on a device without RU support before any attribute
is read, and test only the QP type in the create helpers (9, 10)
- Limit a modify of an RU QP to its create attributes, and auto-bind
its counter on create (9)
- Check and copy only the QP semantics fields comp_mask selects (10)
- Refuse an ordering whose data-ordering size is given as 0 (10)
- Keep a derived region in its parent's job, and refuse a negative
dma-buf fd (11)
- Order the attached MR's usecnt decrement after clearing attached_qp
on QP destroy (13)
- Order the attach and detach usecnt updates before the MR's lock is
released (13)
- Document driver duties for job lifetime, sgid_attr, JobID uniqueness,
derived regions, rereg of 64-bit keys, unattached regions and QPN
assignment (3, 4, 7, 11, 12, 13)
- Link to v2: https://patch.msgid.link/20261019-uet-ib-core-v2-0-8bd654f25370@broadcom.com
Changes in v2:
- Rebase on rdma for-next
- Refuse the write post_send and post_recv commands on an RU QP (4)
- Read the extended AH attribute with uverbs_copy_from_or_zero() (5, 7)
- Export a job as a uverbs FD object, import it through a raw fd, and
drop the job revoke on device removal (7)
- Drop the job and job key flags attributes, none was defined (7)
- Require the address table size at job allocation and check each
index against it (7)
- Use uverbs_finalize_uobj_create() in JKEY_CREATE and
uverbs_copy_to_struct_or_zero() in JOB_ADDR_QUERY (7)
- Drop IS_ERR() checks on mandatory handles (5, 7)
- Simplify the REG_MR optional attribute handling (11, 12)
- Reword the commit messages of patches 1 and 6
- Link to v1: https://patch.msgid.link/20261014-uet-ib-core-v1-0-a0e626117113@broadcom.com
---
Eric Davis (13):
RDMA/core: widen the uverbs object key
RDMA/core: add the UET GID types
RDMA/core: report the reliable unconnected device capabilities
RDMA/core: add the reliable unconnected queue pair type
RDMA/core: extended address handle attributes
RDMA/core: query the semantics a queue pair type guarantees
RDMA/core: job and job key objects
RDMA/uverbs: factor out the queue pair attribute copy
RDMA/core: create a queue pair ready to send
RDMA/core: queue pair attributes for unconnected transports
RDMA/core: extended memory registration
RDMA/core: 64-bit memory keys
RDMA/core: attach a memory region to a queue pair
drivers/infiniband/core/Makefile | 3 +-
drivers/infiniband/core/cache.c | 12 +-
drivers/infiniband/core/cma.c | 9 +-
drivers/infiniband/core/device.c | 16 +-
drivers/infiniband/core/nldev.c | 10 +
drivers/infiniband/core/rdma_core.h | 2 +
drivers/infiniband/core/restrack.c | 19 +-
drivers/infiniband/core/roce_gid_mgmt.c | 6 +-
drivers/infiniband/core/user_mad.c | 4 +-
drivers/infiniband/core/uverbs.h | 35 ++
drivers/infiniband/core/uverbs_cmd.c | 266 +++++----
drivers/infiniband/core/uverbs_std_types.c | 74 ++-
drivers/infiniband/core/uverbs_std_types_device.c | 90 ++-
drivers/infiniband/core/uverbs_std_types_job.c | 644 ++++++++++++++++++++++
drivers/infiniband/core/uverbs_std_types_mr.c | 226 +++++++-
drivers/infiniband/core/uverbs_std_types_qp.c | 363 +++++++++++-
drivers/infiniband/core/uverbs_uapi.c | 2 +
drivers/infiniband/core/verbs.c | 130 ++++-
include/rdma/ib_verbs.h | 245 +++++++-
include/rdma/restrack.h | 8 +
include/rdma/uverbs_ioctl.h | 6 +-
include/uapi/rdma/ib_user_ioctl_cmds.h | 115 ++++
include/uapi/rdma/ib_user_ioctl_verbs.h | 107 ++++
include/uapi/rdma/ib_user_verbs.h | 27 +
24 files changed, 2264 insertions(+), 155 deletions(-)
---
base-commit: e50525a486300e5ff8014c9985b8477b2fca0368
change-id: 20260929-uet-ib-core-d82e941f5e52
Best regards,
--
Eric Davis <eric.davis@broadcom.com>
next reply other threads:[~2026-11-10 4:01 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-10 4:00 Eric Davis via B4 Relay [this message]
2026-11-10 4:00 ` [PATCH rdma-next v3 01/13] RDMA/core: widen the uverbs object key Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 02/13] RDMA/core: add the UET GID types Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 03/13] RDMA/core: report the reliable unconnected device capabilities Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 04/13] RDMA/core: add the reliable unconnected queue pair type Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 05/13] RDMA/core: extended address handle attributes Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 06/13] RDMA/core: query the semantics a queue pair type guarantees Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 07/13] RDMA/core: job and job key objects Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 08/13] RDMA/uverbs: factor out the queue pair attribute copy Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 09/13] RDMA/core: create a queue pair ready to send Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 10/13] RDMA/core: queue pair attributes for unconnected transports Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 11/13] RDMA/core: extended memory registration Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 12/13] RDMA/core: 64-bit memory keys Eric Davis via B4 Relay
2026-11-10 4:00 ` [PATCH rdma-next v3 13/13] RDMA/core: attach a memory region to a queue pair Eric Davis via B4 Relay
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=20261109-uet-ib-core-v3-0-3e7e7ffed2e9@broadcom.com \
--to=devnull+eric.davis.broadcom.com@kernel.org \
--cc=eric.davis@broadcom.com \
--cc=jgg@ziepe.ca \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
/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®