<!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-general] FMR and how they work</TITLE>
</HEAD>
<BODY>
<BR>
<BR>

<P><FONT SIZE=2>> -----Original Message-----</FONT>
<BR><FONT SIZE=2>> From: Fab Tillier [<A HREF="mailto:ftillier@infiniconsys.com">mailto:ftillier@infiniconsys.com</A>] </FONT>
<BR><FONT SIZE=2>> Sent: Monday, May 02, 2005 4:50 AM</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> Is the HW2SW_MPT command more expensive than the SYNC_TPT </FONT>
<BR><FONT SIZE=2>> command?  </FONT>
</P>

<P><FONT SIZE=2>SYNC_TPT wipes out the caches. HW2SW_MPT cleans caches for the</FONT>
<BR><FONT SIZE=2>specific MPT. You're welcome to compare the two execution time. I believe</FONT>
<BR><FONT SIZE=2>that the main impact on CPU is by the fact that you need to submit a </FONT>
<BR><FONT SIZE=2>command and wait for it to complete (interrupt->EQE).</FONT>
</P>

<P><FONT SIZE=2>> Does it just flush the MPT out of the cache?  What </FONT>
<BR><FONT SIZE=2>> happens to that MPT's MTTs - do they get flushed out too </FONT>
<BR><FONT SIZE=2>> (assuming the MPT still references them)?</FONT>
</P>

<P><FONT SIZE=2>For correctness you'd have to flush MPTs and MTTs.</FONT>
</P>

<P><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> Why aren't FMR's bindable?  </FONT>
</P>

<P><FONT SIZE=2>They are not. Check out the PRM.</FONT>
</P>

<P><FONT SIZE=2>> It seems that if the HW2SW_MPT </FONT>
<BR><FONT SIZE=2>> flushes the MPT out of the cache, then one could use it for </FONT>
<BR><FONT SIZE=2>> normal memory registrations and avoid the WRITE_MTT command, </FONT>
<BR><FONT SIZE=2>> no?  </FONT>
</P>

<P><FONT SIZE=2>Please explain. Maybe you meant to use HW2SW_MPT for Deregistration.</FONT>
<BR><FONT SIZE=2>If this is what you mean, then you're right. But it is against the spirit of</FONT>
<BR><FONT SIZE=2>"lazy deregistration".  This will only speed the IO operations halfway.</FONT>
<BR><FONT SIZE=2>On the creation of mapping it'll be fast - just posted writes to the MPT/MTT,</FONT>
<BR><FONT SIZE=2>on the destruction of the mapping, it'll be slow - because you need </FONT>
<BR><FONT SIZE=2>HW2SW_MPT and you'd need probably to create a new blank MR</FONT>
<BR><FONT SIZE=2>for the next reuse.</FONT>
<BR><FONT SIZE=2>The intent was to use bulk deregistrations...</FONT>
</P>

<P><FONT SIZE=2>> That is, during registration, do posted writes for the </FONT>
<BR><FONT SIZE=2>> MTTs and then a SW2HW_MPT command for an MPT entry that </FONT>
<BR><FONT SIZE=2>> references those MTTs.  Would this work?</FONT>
<BR><FONT SIZE=2>> </FONT>
<BR><FONT SIZE=2>> How much slower are memory windows compared to FMRs (assuming </FONT>
<BR><FONT SIZE=2>> the underlying MR is already registered)?</FONT>
</P>

<P><FONT SIZE=2>You're welcomed to measure. I think that FMRs will be the fastest way</FONT>
<BR><FONT SIZE=2>to create mapping. Faster than MWs.</FONT>
<BR><FONT SIZE=2>Also note that FMRs are not bindable. So, there are certain applications</FONT>
<BR><FONT SIZE=2>that can benefit from FMRs (e.g. SRP), but can not leverage MWs, at least</FONT>
<BR><FONT SIZE=2>I can't think of a model for that...</FONT>
</P>

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

</BODY>
</HTML>