Re: [PATCH rdma-next 00/13] Elastic Fabric Adapter (EFA) driver

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Thu, Jan 03, 2019 at 06:32:56PM -0500, Doug Ledford wrote:

> > The original point is still un-addressed. We, as a community, have
> > identified usnic as a bad idea that does not belong in
> > drivers/infiniband. This has been a pretty much universal position of
> > everyone who has worked on the core RDMA stack.
> 
> I'll generally agree with this.  It turns out usnic is not so much about
> access to a shared device with PD, QP, CQ, MR and AH support, but an
> SRIOV network device attached to a process with minimal (but sufficient
> I think) security measures to at least make sure that process can't
> listen in on other traffic.  From there, it's just UDP on a private
> network adapter.

EFA looks the same to me, except instead of UDP it is doing a bit
more, but it still just datagram processing. There are no verbs here
other than SEND and RECV. There is no RMA..

The functions usnic and EFA stub to EOPNOTSUPP/null look super similar
to me.

The fake PD construction looks similar, except EFA uses something
outside the driver to create it.

Neither support req_notify_cq, so they don't really support verbs CQ
semantics. I guess polling only?

> > Do we want to reverse course on that and accept that usnic-like things
> > are actually OK? (ie no kverbs, no libibverbs and totally proprietary
> > everything)
> 
> Even if we say the above is true, there are other factors to consider. 
> Unlike usnic, efa follows much more closely to the existing rdma device
> model.  It's not a separate device per process, it's a single shared
> device. 

I've never used usnic, is this true? It sure looks like it can
allocate ucontexts dynamically?? I think that is what the vnic stuff
is for?? Maybe the ucontext limit is pretty small, but there sure is
alot of code here if the limit is just 1.. We also don't know the EFA
ucontext limit ...

> It actually *does* have the concept of PD, CQ, QP, and AH.  It
> doesn't do UDP, it actually does post_send and post_recv.  

I think it is the same, usnic once had a post_send/recv implementation
in it's libibverbs provider, pretty much anything that has a command
queue for datagram could implement basic (but maybe non-conforming)
post_send/recv verbs for UD.

So if there is a EFA provider it would be in the same place as where
usnic started at before libfabric <shrug>

> above makes me inclined to be more accepting of efa.  If you add in a
> libibverbs provider and actual official, working UD support, then even
> more so.

running through libibverbs DV and having enough to be an to do the
standard ud_ping_pong would be better.

But, IIRC, usnic could do ud_ping_pong at one point too.

> > verbs is supposed to be a multi-vendor standard, not an enumeration of
> > every kind of proprietary device-specific behavior.
> 
> What it's supposed to be...and what it is...well, that's evolving on a
> day to day basis, and it's already got plenty of proprietary, device-
> specific behavior.

It certainly does..
 
> To be honest, I don't even consider libibverbs a viable programming
> interface anymore for the most part.  What I mean by this is that
> libibverbs exists, and there are already existing consumers of
> libibverbs.  I expect those things to continue.  But, for the most part,
> people are encouraged now a days to use another interface at a higher
> level that then uses libibverbs behind the scenes: libfabric, UCX, MPIs,
> existing low latency middlewares, etc.  Nobody I know if is telling
> people to write new code to libibverbs.

I'm still seeing/hearing that libibverbs is the goto choice for things
that are not HPC-style focused as all the alternatives are currently
unsuitable in some way.

It is also still the only choice if you want heterogenous
interoperability.

But libibverbs is a horrible mess of an API at this point..

> But by that same token, if we are the common, device file opening,
> kernel interacting layer, then we must also be the place where all of
> the proprietary vendor specific stuff is implemented.  And we already
> are.  I cite all of the recent Mellanox Direct Verbs stuff as exactly
> that.  

We definately have allowed a side-car of proprietary stuff. The qib
chardev started it, and the Mellanox DV/devx stuff is a more
integrated take on the exact same idea..

> It does raise the question of whether, to be consistent, we should
> have requested psm/psm2 also be part of rdma-core.

I did ask, was told 'not interested' :)

> Mellanox uses the driver direct model, Intel uses a separate cdev,
> and efa is apparently intending to follow Mellanox's example.  I
> don't see a problem with that.

Nor I..

> > Let alone the issue that libibverbs, assumes it has providers for all
> > the system devices and pukes if it doesn't - that will need fixing too
> > if we actually want to properly support this model.
> 
> We can fix libibverbs if we ever do take a driver without a verbs
> driver, but I don't know that we are there yet, and I still think
> libibverbs as the shim to interface with the kernel is a good idea.

Well we already have usnic without a verbs provider, everyone just
ignores the breakage it inflicts.

I think that is a really bad place for a new driver to start out at..

Jason



[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux