[openib-general] NFS/RDMA client release for Linux 2.6.15
Talpey, Thomas
Thomas.Talpey at netapp.com
Sun Feb 19 14:56:41 PST 2006
At 05:28 PM 2/19/2006, Roland Dreier wrote:
> Christoph> - rdma_convert_physiov/rdma_convert_phys are completely
> Christoph> broken. page_to_phys can't be used by driver/fs code.
> Christoph> RDMA only deals with bus addresses, not physical
> Christoph> addresses. You must use the dma mapping API
> Christoph> instead. Also coalescing decisions are made by the dma
> Christoph> layer, because they are platform dependent and much
> Christoph> more complex then what the code in this patch does.
>
> Thomas> Now that we are moving to OpenIB api's this is
> Thomas> needed. There is some thought necessary w.r.t. our
> Thomas> max-performance mode of preregistering memory in DMA
> Thomas> mode. That's on our list of course.
>
>Again let me echo Christoph's point. If you are passing physical
>addresses into IB functions, then your code simply won't work on some
>architectures. Making sure your code actually works on something like
>a ppc64 box with an IOMMU would be a good test -- the low-end IBM
>POWER machines are cheap enough that you could just buy one if you
>don't have easy access.
Yep, I get it!
To elaborate a little, we're not exactly passing physical addresses. What
we're doing is using the physaddr to calculate an offset relative to a base
of zero. We register the zero address and advertise RDMA buffers via
offsets relative to that r_key.
And, this is only one of many memory registration modes. We would use
memory windows, if only OpenIB provided them (yes I know the hardware
currently sucks for them). We will add FMR support shortly. In both these
modes we perform all addressing by the book via 1-1 OpenIB registration.
Tom.
More information about the general
mailing list