Hi Grant,<br>
Thanks very much.<br>
I scanned the IO-mapping.txt, DMA-API.txt and DMA-mapping.txt as soon as I could and have got a main concept now.<br>
As your mentioned, ULPs in OpenIB (e.g. SDP or IPoIB) are responsible
for properly mapping and unmapping for DMA use. AFAIK, SDP is
implemented with the IB native verbs. What about the kDAPL? In my
opinion the kDAPL does not do the mapping and unmapping work. So it is
the responsibility of the kernel applications using the kDAPL. Am I
right?<br><br><div><span class="gmail_quote">On 12/17/05, <b class="gmail_sendername">Grant Grundler</b> <<a href="mailto:iod00d@hp.com">iod00d@hp.com</a>> wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
While IO-mapping.txt gives a nice introduction into the topic<br>of "bus addresses", the answer to the question lies in<br>Documentation/DMA-API.txt. IO devices can only use "bus addresses"<br>that are handed back by the interfaces described in 
DMA-API.txt.<br>For OpenIB, ULPs (e.g. SDP or IPoIB) are responsible for properly<br>mapping and unmapping for DMA use.<br><br>While many architectures don't use IOMMU (and thus have 1:1<br>between host physical:bus address), virtualization seems to be
<br>forcing the issue in the "near" future. All DMA access will need<br>to be enforced to isolate virtualized guests. This is something<br>some platforms with IOMMUs enforce today (e.g. Sparc64, PPC64 and PA-RISC).
<br><br>hth,<br>grant<br></blockquote></div><br><br clear="all"><br>-- <br>Ian Jiang<br><a href="mailto:ianjiang.ict@gmail.com">ianjiang.ict@gmail.com</a><br><br>Laboratory of Spatial Information Technology<br>Division of System Architecture
<br>Institute of Computing Technology<br>Chinese Academy of Sciences