[openib-general] openib gen2 architecture

Roland Dreier roland at topspin.com
Thu Nov 18 08:28:43 PST 2004


    shaharf> It seems to me that the major design approach is to do
    shaharf> everything in the kernel but let user mode staff access
    shaharf> to the lower levels to enable performance sensitive
    shaharf> applications override all kernel layers. Am I right?

No.  The reason everything is in the kernel now is that we simply have
not started implementing any userspace verbs support.

    shaharf> I wonder if this is not the right time to come up with
    shaharf> much better abstraction - for user mode and for kernel
    shaharf> mode. For example, it seems that the abstraction layer
    shaharf> should abstract the IB networking objects and not the IB
    shaharf> hca interface. In other words - why not to build the
    shaharf> abstraction around IB networking types - UD, RC, RD,
    shaharf> MADS? Why do we have to expose the memory management
    shaharf> model of the driver/HCA to upper layers? Do we really
    shaharf> want to expose IB related structures such as CQs, QPs,
    shaharf> and WQE? Why? Not only that this is not good for
    shaharf> abstraction meaning changes in the drivers will require
    shaharf> upper layers modifications, but also this is very
    shaharf> problematic due security and stability reasons.

Keep in mind that CQs, QPs and other IB transport objects are
themselves abstractions.  I'm not opposed to better abstractions in
principle, but I think that the current level is a good one.  Any IB
hardware is likely to be optimized for implementing these
abstractions, and I have a hard time believing we are smart enough to
build layers on top of them that are both generic enough and efficient
enough for all applications.

    shaharf> I think that using correct abstraction is very critical
    shaharf> for a real acceptance in the Linux/open source world.

I agree.  However, I think the Linux kernel community will actually be
opposed to extra abstraction layers that hide what the hardware is
really doing.  For example, I believe any really high-performance IB
application is going to understand the work queueing model and want to
deal with QPs and CQs.

    shaharf> Why should we develop complicated functionality such as
    shaharf> RMPP in the kernel when the only few kernel based queries
    shaharf> (if any at all) will use them?

Funny you should raise this point.  I said the same thing some time
ago and Yaron Haviv violently disagreed ;)

 - Roland



More information about the general mailing list