<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.2722" name=GENERATOR></HEAD>
<BODY>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>An option li</FONT></SPAN><SPAN 
class=928091713-06122005><FONT face=Arial color=#0000ff size=2>ke that was 
discussed in RNIC-PI, but is not generally</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>explicitly supported.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>What the kernel daemon must do is map the user-space 
to</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>bus/io addresses and then physically register that as 
a</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>Memory Region (or LMR if working at the DAT 
layer).</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>If the user-mode application is not explicitly involved 
in</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>identifying what buffers are going to be used (i.e., 
registering</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>the memory) then you won't achieve the full efficiency of 
RDMA.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>Creating memory regions per operation at the verb layer is 
expensive.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>and interferes with pipelining. Full fast-memory-register 
work requests</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>are defined in iWARP and the latest IBTA spec, but has not 
made</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>it into wide deployment yet.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>Unless the user-kernel daemon interface is something you 
are</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=928091713-06122005><FONT face=Arial 
color=#0000ff size=2>inheriting I would not recommend this 
approach.</FONT></SPAN></DIV><BR>
<BLOCKQUOTE 
style="PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px solid; MARGIN-RIGHT: 0px">
  <DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
  <HR tabIndex=-1>
  <FONT face=Tahoma size=2><B>From:</B> openib-general-bounces@openib.org 
  [mailto:openib-general-bounces@openib.org] <B>On Behalf Of </B>Ian 
  Jiang<BR><B>Sent:</B> Tuesday, December 06, 2005 4:52 AM<BR><B>To:</B> James 
  Lentini<BR><B>Cc:</B> openib-general<BR><B>Subject:</B> Re: [openib-general] 
  [kDAPL]How to register a vmalloc() allocated buffer<BR></FONT><BR></DIV>
  <DIV></DIV>Hi James,<BR>You are always so kind!<BR>Now I have a question about 
  reading a buffer of a application in user space.<BR>Is it the only way to use 
  the uDAPL?<BR>I used to have an idea like this: <BR>The application in user 
  space gives the virtual start address and length of its data buffer to a 
  kernel module program. This kernel program acts as a application of the kDAPL 
  and registers the user space data buffer with the kDAPl, then request a RDMA 
  read operation to complete the data transferring.<BR>But I think it is not 
  feasible after getting your last reply. Am I right?<BR>Please give some 
  suggestion and thanks very much!<BR><BR>
  <DIV><SPAN class=gmail_quote>On 12/6/05, <B class=gmail_sendername>James 
  Lentini</B> <<A onclick="return top.js.OpenExtLink(window,event,this)" 
  href="mailto:jlentini@netapp.com" target=_blank>jlentini@netapp.com </A>> 
  wrote:</SPAN>
  <BLOCKQUOTE class=gmail_quote 
  style="PADDING-LEFT: 1ex; MARGIN: 0pt 0pt 0pt 0.8ex; BORDER-LEFT: rgb(204,204,204) 1px solid">Hi 
    Ian,<BR><BR>An IB HCA needs to be able to DMA the memory used for RDMA read. 
    Since<BR>vmalloc does not guarantee that the memory it returns can be 
    accessed<BR>via DMA, you should not use 
  vmalloc.<BR><BR>james<BR></BLOCKQUOTE></DIV><BR><BR clear=all><BR>-- <BR>Ian 
  Jiang<BR><A onclick="return top.js.OpenExtLink(window,event,this)" 
  href="mailto:ianjiang.ict@gmail.com" 
  target=_blank>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 </BLOCKQUOTE></BODY></HTML>