Messages in this thread |  | | Subject | Re: how to get virtual address from dma address | Date | Wed, 03 Oct 2001 17:44:18 -0500 | From | James Bottomley <> |
| |
> Linux> All programmers I am relatively new to linux kernel. Please > Linux> advise what is the safe way to get the original virtaul address > Linux> from dma address e.g.,
> You have to store the address you pass to pci_map_single() somewhere > in your data structures together with the dma address.
Yes, but speaking as someone who had to use a large hammer to convert his driver from bus_to_virt et al., it does seem rather hard not to have the equivalent for the new pci_dma paradigm. It does present an obstacle persuading people to convert drivers, particularly if the hardware is going to present a linked list of addresses (as SCSI hardware often does).
After all, whatever device maps between the io bus and the memory bus, it must always map a given dma_addr_t to a known physical address. It can't be that hard to provide an an API in the kernel which can compute this relationship (although I can see it may be expensive to walk iommu page tables). I'm only really asking for a dma_addr_t to virtual address by the way. I see that mapping the other way would be problematic.
James Bottomley
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
|  |