Michael> I'd like to suggest we keep passing struct mthca_buddy
    Michael> *to mthca_alloc_mtt, instead of passing around and
    Michael> keeping in memory the binary fmr flag, since all that
    Michael> this flag does is select the right allocator, and callers
    Michael> of mthca_alloc_mtt/mthca_free_mtt already know which it
    Michael> is.

Makes sense, I'll add that change.

    Michael> + for (i = MTHCA_MTT_SEG_SIZE / 8; i < size; i <<= 1) ++mtt->order;

    Michael> At some point it'd be nice to support zero-sized regions,
    Michael> but meanwhile, isnt this better written as

    mtt->order = fls(max(size, MTHCA_MTT_SEG_SIZE / 8) - 1);

Again I'll do that.

    Michael> Why dont we keep mthca_mtt by instance in struct
    Michael> mthca_mr, like this: struct mthca_mr { struct ib_mr ibmr;
    Michael> struct mthca_mtt mtt; };

    Michael> Saves keeping around an extra small chunk of memory that
    Michael> we need to kfree/kmalloc/check.  mthca_alloc_mtt could
    Michael> get struct mthca_mtt* and use that.

My reasoning was that when we support shared memory regions we'll be
able to share MTTs just by adding a reference cound to the mtt
structure.

 - R.

_______________________________________________
openib-general mailing list
openib-general@openib.org
http://openib.org/mailman/listinfo/openib-general

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

Reply via email to