<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=iso-8859-1"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Times New Roman","serif";
        color:#1F497D;
        font-weight:normal;
        font-style:normal;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span style='color:#1F497D'>Hi Guys,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Another thing I noticed, and this is not part of Alex’s changes but was there from early days, is the following in NVMeAERCompletionRoutine - <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>The logPage value is derived using AssociatedLogPage, instead shouldn’t it be the value returned by AsynchronousEventType field as defined in Fig 30 of 1.0c spec? Also, the #defines for these event type is confused with Log Page Identifier field of Get Log page. <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Am I misinterpreting the spec or is it a bug?<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>  <o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Thanks<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Arpit.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> nvmewin-bounces@lists.openfabrics.org [mailto:nvmewin-bounces@lists.openfabrics.org] <b>On Behalf Of </b>Kong, Kwok<br><b>Sent:</b> Thursday, September 06, 2012 6:28 PM<br><b>To:</b> Chang, Alex; Robles, Raymond C; nvmewin@lists.openfabrics.org<br><b>Subject:</b> Re: [nvmewin] ***UNCHECKED*** Aug 28 - Patch (NVMe 1.0c Compliance and others) --- Intel Feedback<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='color:#1F497D'>Alex,<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='color:#1F497D'>Please see my embedded comment …<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><div><div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> <a href="mailto:nvmewin-bounces@lists.openfabrics.org">nvmewin-bounces@lists.openfabrics.org</a> [<a href="mailto:nvmewin-bounces@lists.openfabrics.org">mailto:nvmewin-bounces@lists.openfabrics.org</a>] <b>On Behalf Of </b>Chang, Alex<br><b>Sent:</b> Thursday, September 06, 2012 6:07 PM<br><b>To:</b> Robles, Raymond C; <a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a><br><b>Subject:</b> Re: [nvmewin] ***UNCHECKED*** Aug 28 - Patch (NVMe 1.0c Compliance and others) --- Intel Feedback<o:p></o:p></span></p></div></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'>Hi Raymond,</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'> <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'>Please see my comments in </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>red</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'>...</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'> <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'>Thanks,</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'>Alex</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p> </o:p></span></p><div class=MsoNormal align=center style='text-align:center'><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><hr size=2 width="100%" align=center></span></div><p class=MsoNormal style='margin-bottom:12.0pt'><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> Robles, Raymond C [<a href="mailto:raymond.c.robles@intel.com">mailto:raymond.c.robles@intel.com</a>] <br><b>Sent:</b> Thursday, September 06, 2012 5:25 PM<br><b>To:</b> <a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a>; Chang, Alex<br><b>Subject:</b> ***UNCHECKED*** Aug 28 - Patch (NVMe 1.0c Compliance and others) --- Intel Feedback</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Alex,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Here is Intel’s feedback on your patch.  Let us know if you need any more info on our comments/questions.<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>-</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>          </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>nvme.h:<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Courier New";color:#1F497D'>o</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>    </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>ADMIN_SET_FEATURES_LBA_COMMAND_RANGE_TYPE_ENTRY Structure: GUID field (changed from ULONGLONG to UCHAR [16]) – what was the reason for this change?</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'> </span><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>To match the size of GUID defined in NVMe spec, which is 16 bytes in length. If I understand it right that ULONGLONG is only 8-byte long.</span><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Courier New";color:#1F497D'>o</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>    </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>General Comment: With the 1.0c changes, will the driver be backward compatible with 1.0b? If not, do we need a mechanism to do so or have you thought about what we should be doing in this case?  Did you attempt any testing of this?</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'> </span><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>No, I don't think it's backward compatible with 1.0b. The only thing I can think of as compatibility issue is the 0's based NUMD of Firmware Image download and Get Log Page command. In 1.0b, the spec did not indicate it clearly. Now, 1.0c clarifies it. I don't mind to add an ifdef to differenciate them.</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#00B050'><Kwok> I think you meant it is backward compatible with 1.0b. The 0’s based NUMD was not clearly indicated in 1.0b. We may have misinterpreted it but it was a bug in the driver if we mis-interpreted it.   It was a bug fix then and not a compatibility problem with 1.0b.<o:p></o:p></span></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>-</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>          </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>nvmeInit.c:<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Courier New";color:#1F497D'>o</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>    </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>NVMeResetAdapter:<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:Wingdings;color:#1F497D'>§</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>  </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>What is the use case for having a check for RDY already being 0 (we can never have nested resets so it would seem this would never be the case but not totally sure)?</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'> </span><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>The code is checking the RDY bit to find out if the controller had already been reset. If so, there is no point to write 0 to EN bit of CC register again.</span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:red'> <o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Courier New";color:#1F497D'>o</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>    </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>NVMeNormalShutdown:<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:Wingdings;color:#1F497D'>§</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>  </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Same comment as above for reset adapter (same check is performed here).<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:Wingdings;color:#1F497D'>§</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>  </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>The comment on line 2469 states that the code is waiting for all queues to be deleted, but really you are just checking to see that the RDY bit has been set to 0 indicating the transition of the EN bit from 1 to 0.</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'> </span><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>Per NVMe specification, when RDY bit becomes 0 due to a reset, it indicates the created queues have been deleted.</span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:red'> <o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Courier New";color:#1F497D'>o</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>    </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>NvmeCheckPendingCpl:<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:Wingdings;color:#1F497D'>§</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>  </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>“unsigned int” is used for a variable declaration. We always use typedef types… should be ULONG.</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'> </span><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>Will change it.</span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:red'> <o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:Wingdings;color:#1F497D'>§</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>  </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>General Comment: There is already a function to detect if commands are pending… NVMeDetectPendingCmds in nvmeIo.c. This was done as part of the S3/S4 work that Rick/Arpit (LSI) did. Did you take a look at this function and see if it was similar to your new function? Was there something specific that you needed differently than what was already coded in the existing function?</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'> </span><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.5in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>I think they are for different</span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:red'> </span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>purposes. NVMeDetectPendingCmds is called to ensure there is no pending IO before enterring power saving modes. NVMeCheckPendingCpl is called to see if we have any pending completed entries in any one of the created completion queues to determine if we do own the INTx interrupt. In other words, pending IOs don't mean they had just been completed when INTx interrupt happens.</span><o:p></o:p></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoListParagraph style='text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>-</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>          </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>nvmeStd.c:<o:p></o:p></span></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Courier New";color:#1F497D'>o</span><span style='font-size:7.0pt;font-family:"Times New Roman","serif";color:#1F497D'>    </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Line 1657: Paul removed all support for CHATHAM in a previous patch (but left in CHATHAM2 support). Please remove the CHATHAM check from the code.</span><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:blue'> </span><o:p></o:p></p><p class=MsoListParagraph style='margin-left:1.0in;text-indent:-.25in'><span style='font-size:10.0pt;font-family:"Arial","sans-serif";color:red'>Will do it.</span><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:red'> <o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Thanks,<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Ray<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'><img border=0 width=54 height=39 id="_x0000_i1050" src="cid:image001.png@01CD8CED.EBB703B0" alt="Description: cid:image001.png@01CB3870.4BB88E70"><o:p></o:p></span></b></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Raymond C. Robles<o:p></o:p></span></b></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Attached Platform Storage Software<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Datacenter Software Division<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Intel Corporation<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Desk: 480.554.2600<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif";color:#1F497D'>Mobile: 480.399.0645</span><span style='color:#1F497D'><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>