[openib-general] [kernel verbs] u64 vs dma_addr_t
Rimmer, Todd
trimmer at silverstorm.com
Fri Dec 30 13:11:00 PST 2005
James wrote:
> Why does the kernel verbs API use u64 as the type for I/O virtual
> addresses instead of dma_addr_t (e.g. mthca_mr_alloc_phys()'s iova
> param)?
dma_addr_t is the appropriate datatype for an address on the local CPU/system.
However, in Infiniband IO virtual addresses can also be exchanged across the wire for use by RDMA. Hence the address must be 64 bits [the size defined by Infiniband RDMA addressing protocols on the wire] even if the local system is a 32 bit CPU. This is necessary to support the case where the remote system has a 64 bit address space.
Todd Rimmer
More information about the general
mailing list