<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=US-ASCII">
<META NAME="Generator" CONTENT="MS Exchange Server version 5.5.2654.45">
<TITLE>RE: [Openib-windows] HCA: register_segment confusion</TITLE>
</HEAD>
<BODY>

<P><FONT SIZE=2>> ... what the code is trying to do here? </FONT>
</P>

<P><FONT SIZE=2>This code is trying to produce different and exact return codes in case of error.</FONT>
<BR><FONT SIZE=2>"fake_ro" mechanism is intended to check, whether a failure on IoReadAccess is caused by access permission violation (then it returns MT_EPERM) or some other reason (MT_EAGAIN).</FONT></P>

<P><FONT SIZE=2>Retry mechanism helps differentiate between 2 causes of STATUS_ACCESS_VIOLATION: wrong access permissions (MT_EPERM) or invalid virtual address (MT_ENOMEM). </FONT></P>

<P><FONT SIZE=2>Just FYI: the most popular cause of MT_EAGAIN - the exception 0xc00000a1 ("process memory quote is exceeded"), which happens upon large allocations.</FONT></P>

<P><FONT SIZE=2>> I started looking at adding support for large registrations ...</FONT>
<BR><FONT SIZE=2>this code is checked to successfully register 1GB buffers.</FONT>
<BR><FONT SIZE=2>  </FONT>
</P>

<P><FONT SIZE=2>> Memory locking should be a whole lot simpler ...</FONT>
</P>

<P><FONT SIZE=2>As far as Gen2 driver tends to return only several main error codes and i needed</FONT>
<BR><FONT SIZE=2>MOSAL_iobuf_register/deregister services, i've taken these routines to the low level driver and simplified them by removing both mechanisms.</FONT></P>

<P><FONT SIZE=2>I'm going to publish the code of the driver as it is, so you'll see the new variant and be able to comment on it.</FONT>
</P>

<P><FONT SIZE=2>> -----Original Message-----</FONT>
<BR><FONT SIZE=2>> From: Fab Tillier [<A HREF="mailto:ftillier@silverstorm.com">mailto:ftillier@silverstorm.com</A>]</FONT>
<BR><FONT SIZE=2>> Sent: Monday, October 10, 2005 10:50 PM</FONT>
<BR><FONT SIZE=2>> To: openib-windows@openib.org</FONT>
<BR><FONT SIZE=2>> Subject: [Openib-windows] HCA: register_segment confusion</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> The register_segment function (mosal_iobuf.c@74) is a bit </FONT>
<BR><FONT SIZE=2>> confusing to say the</FONT>
<BR><FONT SIZE=2>> least.  What's the deal with the "fake_ro" checks, and trying </FONT>
<BR><FONT SIZE=2>> to lock the pages</FONT>
<BR><FONT SIZE=2>> multiple times in different ways?  Can someone from Mellanox </FONT>
<BR><FONT SIZE=2>> help explain what</FONT>
<BR><FONT SIZE=2>> the code is trying to do here?  What does the retry flag do?  </FONT>
<BR><FONT SIZE=2>> What's going on</FONT>
<BR><FONT SIZE=2>> with the alternating read/write checks if modify right checks fail?</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> I started looking at adding support for large registrations, </FONT>
<BR><FONT SIZE=2>> and I'm worried</FONT>
<BR><FONT SIZE=2>> that if I touch something it'll all fall over.  Memory </FONT>
<BR><FONT SIZE=2>> locking should be a whole</FONT>
<BR><FONT SIZE=2>> lot simpler than what's going on here, and the comments don't </FONT>
<BR><FONT SIZE=2>> really help.</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> Thanks,</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> - Fab</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> _______________________________________________</FONT>
<BR><FONT SIZE=2>> openib-windows mailing list</FONT>
<BR><FONT SIZE=2>> openib-windows@openib.org</FONT>
<BR><FONT SIZE=2>> <A HREF="http://openib.org/mailman/listinfo/openib-windows" TARGET="_blank">http://openib.org/mailman/listinfo/openib-windows</A></FONT>
<BR><FONT SIZE=2>> </FONT>
</P>

</BODY>
</HTML>