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

Re: [Xen-devel] virtual, physical and bus address on Dom0



On Fri, Feb 17, 2012 at 10:20:21AM -0800, Eric Camachat wrote:
> Consider the code:
> 
> dma_addr_t dma_addr, dma_addr2;
> phys_addr_t phys_addr;

> cpu_addr = pci_alloc_consistent(pdev, size, &dma_addr);
> phys_addr = virt_to_phys(cpu_addr);
> dma_addr2 = virt_to_bus(cpu_addr);
> 
> In Dom0 the outputs are:
> 
> dma_addr: 0xbc800000

You should use the dma_addr.

> phys_addr: 0x5b000000
> dma_addr2: 0x5b000000
> 
> Why the addresses are different in dma_addr and dma_addr2?

B/c you are doing a bit shift on the cpu_addr - both virt_to_phys
and virt_to_bus do exactly the same thing.

> Which one is the correct value I should use in DMA operations?

The one that pci_alloc_coherent gives you.
> 
> Eric
> 
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.