On Thu, Dec 10, 2015 at 10:44:13AM -0700, Jason Gunthorpe wrote: > > the signature of the function in struct ib_dma_mapping_ops. > > It is supposed to be a dma_addr_t 'cookie' not a u64. > > A patch to cleanup the core in this area would be appreciated.
I walked through the ib_dma_* mess in detail, and sadly speaking it has to be a u64. This is due to the drivers being consolidated into rdmavt in fact. Those drivers use the addr field in struct ib_sge to point to a kernel virtual address, not to a DMA address. In Linux u64 is the safe superset for a dma_addr_t and a pointer so we'll need to go with that. Now these drivers will end up dma mapping these virtual addresses later, so we might want figure out a) why the qib & co drivers even need the virtual address, and b) see if we maybe should always do the dma_map in the callers anyway, and just have an additional virtual address field for those drivers if absolutely needed. -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to [email protected] More majordomo info at http://vger.kernel.org/majordomo-info.html
