Re: driver mmap implementation for memory allocated with pci_alloc_consistent()?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, May 18, 2011 at 03:02:30PM +0200, Leon Woestenberg wrote:
> Hello all,
> 
> memory allocated with pci_alloc_consistent() returns the (kernel)
> virtual address and the bus address (which may be different from the
> physical memory address).
> 
> What is the correct implementation of the driver mmap (file operation
> method) for such memory?
> 
> I assume remap_pfn_range() must be used, but how can I find out the
> correct arguments, such as the physical address?

You are going to use the physical address from the CPU side. So not
the bus address. Instead use the virtual address and find the 
physical address from that. page_to_pfn() does a good job.

Then you can call 'vm_insert_page(vma...)'

Or 'vm_insert_mixed'
> 
> Some plainly use the bus address as the physical address to
> remap_pfn_range, but that seems plain wrong to be in general.

Yeah, what code is doing that? It shouldn't be doing it.
> 
> This questions seems a FAQ, but I found different (and
> contradictionary) answers on Google.

Use 'cscope' on the Linux kernel.
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux