Re: how to get virtual address from dma address

From: Jes Sorensen (jes@sunsite.dk)
Date: Fri Oct 05 2001 - 09:06:31 EST


>>>>> "James" == James Bottomley <James.Bottomley@HansenPartnership.com> writes:

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.

James> Yes, but speaking as someone who had to use a large hammer to
James> convert his driver from bus_to_virt et al., it does seem rather
James> hard not to have the equivalent for the new pci_dma paradigm.
James> It does present an obstacle persuading people to convert
James> drivers, particularly if the hardware is going to present a
James> linked list of addresses (as SCSI hardware often does).

Because as DaveM pointed out, some hardware can't do it, and as I said
earlier, it's a lot cheaper and easier for driver writers to just
store the extra pointer in their data structures than it is to
implement a database to maintain it.

Remember you often need this address in the hot path (say TX interrupt
handler) so you don't want to introduce any unnecessary function calls.

Jes
-
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/



This archive was generated by hypermail 2b29 : Sun Oct 07 2001 - 21:00:37 EST