[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