Re: [PATCH rdma-next 01/10] RDMA: Add access flags to ib_alloc_mr() and ib_mr_pool_init()

From: Jason Gunthorpe
Date: Tue Apr 06 2021 - 10:04:47 EST


On Tue, Apr 06, 2021 at 02:30:34PM +0200, Christoph Hellwig wrote:
> On Tue, Apr 06, 2021 at 09:13:12AM -0300, Jason Gunthorpe wrote:
> > So we broadly have two choice
> > 1) Diverge the kernel and user interfaces and make the RDMA drivers
> > special case all the kernel stuff to force
> > ACCESS_RELAXED_ORDERING when they are building MRs and processing
> > FMR WQE's
> > 2) Keep the two interfaces the same and push the
> > ACCESS_RELAXED_ORDERING to a couple of places in the ULPs so the
> > drivers see a consistent API
> >
> > They are both poor choices, but I think #2 has a greater chance of
> > everyone doing their parts correctly.
>
> No, 1 is the only sensible choice. The userspace verbs interface is
> a mess and should not inflict pain on the kernel in any way. We've moved
> away from a lot of the idiotic "Verbs API" concepts with things like
> how we handle the global lkey, the new CQ API and the RDMA R/W
> abstraction and that massively helped the kernel ecosystem.

It might be idiodic, but I have to keep the uverbs thing working
too.

There is a lot of assumption baked in to all the drivers that
user/kernel is the same thing, we'd have to go in and break this.

Essentially #2 ends up as deleting IB_ACCESS_RELAXED_ORDERING kernel
side and instead doing some IB_ACCESS_DISABLE_RO in kernel,
translating uverbs IBV_ACCESS_* to this then finding and inverting all
the driver logic and also finding and unblocking all the places that
enforce valid access flags in the drivers. It is complicated enough

Maybe Avihai will give it a try

Jason