Thread (76 messages) 76 messages, 11 authors, 2025-04-22

RE: [RFC PATCH 00/13] Ultra Ethernet driver introduction

From: Sean Hefty <hidden>
Date: 2025-03-31 19:29:38
Also in: linux-rdma

quoted
 I have a proposal to rework/redefine PDs to support a more general
model,
It would certainly be good to have some text explaining some of the mappings
to different technologies.
quoted
which I think will work for NICs that
need a PD and ones that don't.  It can support MR -> PD -> Job, but I
considered the PD -> job relationship as 1 to many.
Yes, and the 1:1 is degenerate.
quoted
Sure, It's challenging in that a UET endpoint (QP) may communicate
with multiple jobs, and a MR may be accessible by a single job, all
jobs, or only a few.
I would suggest that the PD is a superset of all jobs and the objects (endpoint,
mr, etc) get to choose a subset of the PD's jobs during allocation?

Or you keep job/pd as 1:1 and allow specifying multiple PDs during object
allocation.

But to be clear, this is largely verbs modeling stuff - however there is a certain
practicality to trying to fit this multi-job ability into a PD because it allow
reusing alot of existing uAPI kernel code.

Especially if people are going to take existing RDMA HW and tweak it to some
level of UET (ie support only single job) and still require a HW level PD under
the covers.
Yes, I'm trying to ensure that the existing RDMA model continues to work but also support NICs/transports which implement the equivalent security model at the QP (endpoint) level, reusing the PD for both.

Specifically, I want to *allow* separating the different functions that a single PD provides into separate PDs.  The functions being page mapping (registration), local (lkey) access, and remote (rkey) access.  The RDMA model limits a QP to a single PD for all.  To support job-based transports, I propose allowing a QP to use 1 PD for local access (PD specified at QP creation) and multiple PDs for remote access.  Each PD used for remote access would correspond to a different job.

Note: a NIC may limit a QP to being used with a single job and require the local and remote PD be the same (i.e. 1 pd per qp).  So, the RDMA model still fits.

As an optimization, registration can be a separate function, so that the same page mapping can be re-used across different jobs as they start and end.  This requires some ability to import a MR from one PD into another.  This is probably just an optimization and not required for a job model.

I was still envisioning a job manager allocating device specific resources for a job and sharing those with the local processes.  I.e. it shares a set of fd's, with each fd associated with a device, which restricts the job to those devices.  A job may also have device specific resource limits or allocations (limit on number of MRs, specific endpoint addresses, etc.)  A global job object could work, but a subsequent user to device flow will need to access and translate the global object.  Either way, there's uABI requirement(s).

- Sean
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help