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