[openib-general] IB Driver Initialization of FMR methods
Tom Tucker
tom at ammasso.com
Fri Aug 12 09:35:16 PDT 2005
Got it. Thanks.
> -----Original Message-----
> From: Roland Dreier [mailto:rolandd at cisco.com]
> Sent: Friday, August 12, 2005 11:11 AM
> To: Tom Tucker
> Cc: openib-general at openib.org
> Subject: Re: [openib-general] IB Driver Initialization of FMR methods
>
> >>>>> "Tom" == Tom Tucker <tom at ammasso.com> writes:
>
> Tom> I've noticed that in the IB driver, the FMR methods are not
> Tom> initialized if the XX_FLAG_FRM bit is not set in the device
> Tom> structure. My assumption at this point is that these methods
> Tom> are not present if they are not supported by the device.
>
> Tom> What's confusing is that the verbs do not check if the
> Tom> function ptr is null when involking the underlying method. I
> Tom> would have expected, that a method would be initialized that
> Tom> returned ENOSYS in this case. Any explanation as to the
> Tom> intended design point for FMR initialization would be greatly
> Tom> appreciated.
>
> I think you must have looked in the wrong place. In
> drivers/infiniband/core/verbs.c, ib_alloc_fmr() starts with:
>
> struct ib_fmr *ib_alloc_fmr(struct ib_pd *pd,
> int mr_access_flags,
> struct ib_fmr_attr *fmr_attr)
> {
> struct ib_fmr *fmr;
>
> if (!pd->device->alloc_fmr)
> return ERR_PTR(-ENOSYS);
>
> so if alloc_fmr is not set, the caller will get -ENOSYS.
>
> We do assume that if the device implements alloc_fmr(), it will
> implement the other FMR methods. This isn't enforced by any code,
> since it doesn't seem worth checking for something that is an obvious
> bug, and that will cause an immediate and easy-to-diagnose oops.
>
> - R.
>
More information about the general
mailing list