Michael S. Tsirkin wrote:

So, since the need seems to be there, I started thinking about how this could 
be done.
Basically, we could create shared memory objects (shm_open) and use these
for all hardware-accessible registers, as well as necessary control (head/tail 
pointers,
spinlocks used for protection, etc).

If we do this, we can use unix domain sockets for everything,
a client just mmaps the fd that it got. Does this make sense?

OK, here's a draft showing how an API to do this could look like.

Basically the idea is that we'd ask low-level drivers to provide an
(optional) API to
1. allocate context and all its objects inside a shared memory object
2. pack and unpack objects from/to unix domain socket messages

So to share a QP, the server would
A. open shared context, create pd, cq, qp
B. listen on unix domain socket
C. pack the context, pd, cq, qp
D. send them to clients that connect

The client would
A. create unix domain socket
B. connect to server
C. get message from server
D. unpack context, pd, cq, qp

One problem here (which annoys for long time...) is that typically the active side of a connection is the one that sends the first packet and hence you must post receives to the QP --before-- accepting the connection request.

So, if both sides use a shared-context, they would need to implement a synchronization protocol (that is don't deliver established event to the active before the passive accepted).

And, if the active side does not use shared context where the passive side does use shared context, you need either the shared context to allocate/post receives from shared-memory or rely on RNR NAKs, what do you think?

Also, what was your thinking on registering the QP/CQ memory? is the plan to implement a verb for registering shared-memory as was in the VAPI stack, or you want to register this memory as "just" virtual?

Or.



_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to