OK, I respun the patch.
I didn't change the calculation of mtt->order to use fls, because the
formula fls(max(size, MTHCA_MTT_SEG_SIZE / 8) - 1) should really be
fls(max(size, MTHCA_MTT_SEG_SIZE / 8)) - fls(MTHCA_MTT_SEG_SIZE / 8)
or something like that, and I ended up confusing myself and so I
Quoting r. Roland Dreier <[EMAIL PROTECTED]>:
> Subject: Re: [PATCH] mthca: fix registration for giant MRs
>
> 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; };
>
> Mic
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_m
Quoting r. Roland Dreier <[EMAIL PROTECTED]>:
> Subject: [PATCH] mthca: fix registration for giant MRs
>
> Here's a patch that allows mthca to break up registration of giant
> userspace MRs into multiple firmware commands. The net effect of this
> is that there should no longer be any limit (beyo