On Wed, Jan 30, 2013 at 03:51:24PM -0600, Steve Wise wrote:
> On 1/30/2013 3:44 PM, Jason Gunthorpe wrote:
> >On Wed, Jan 30, 2013 at 03:36:48PM -0600, Steve Wise wrote:
> >>I wonder, then, what the correct service is to get the cpu physical
> >>address from a kernel virtual address returned from
> >>dma_alloc_coherent()?  I think this is correct as-is, since I think
> >>dma_alloc_coherent() falls under the "directly mapped" addresses in
> >>the virt_to_phys() prototype comment.
> >DMA-API.txt says:
> >
> >  This routine allocates a region of <size> bytes of consistent memory.
> >  It also returns a <dma_handle> which may be cast to an unsigned
> >  integer the same width as the bus and used as the physical address
> >  base of the region.
> >
> >So instead of virt_to_phys you should use dma_addr??
> 
> I don't think so.  The result of virt_to_phys() is used in
> remap_pfn_range() to map this memory into user space...  The
> dma_addr is give to HW for DMA operations.

Oh now I see what this is for.. I've looked at this kind of question
before and I didn't find a satisfactory answer either :(

Just a quick perusal around, it looks like the DRM code (drm_vm) is
using virt_to_page/page_to_pfn/remap_pfn_range for its consistent
mappings.

Jason
--
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

Reply via email to