On Fri, 3 Nov 2006, Steve Wise wrote:
> > > > > > But how? > > > Wait, work request posting functions actually get a virtual > > > address and a key, not a dma address. > > > > Work requests posted using ib_post_send/recv are specified using a dma > > address obtained using the appropriate Linux DMA mapping API function. > > They are not virtual addresses. > > > > This isn't necessarily true. The addr field in the WR is a dma addr > when using a MR allocated via ib_get_dma_mr(). For MRs allocated via > ib_reg_phys_mem(), then the addr field is something relative to the > iova_start u64 passed into the ib_reg_phys_mem(). Right? The only documentation I've ever seen on this topic is here: http://www.linuxjournal.com/article/8009 It says: "The address in the gather list is a DMA address obtained from dma_map_single() rather than a virtual address" NFS-RDMA is the only ULP I know of that uses ib_reg_phys_mr(). NFS-RDMA uses the DMA mapping API to initialize the iova_start address passed into ib_reg_phys_mr(). That is what the Mellanox driver expected (at the time, that was the best documentation I had). Subsequent work request addresses are calculated based on the iova_start address (as you point out), but the iova_start was generated using the DMA mapping API. _______________________________________________ openib-general mailing list [email protected] http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
