<div dir="ltr">Hi Tom,<div><br></div><div>The real solution to this problem is to use CACHING_MODE_PAGE defined in nvmesnti.h and not to use MODE_CACHING_PAGE defined in storport.h. The names are confusing.</div><div><br></div><div>Thanks</div><div>Parag Sheth</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 1, 2014 at 8:00 AM, Thomas Freeman <span dir="ltr"><<a href="mailto:thomas.freeman@hgst.com" target="_blank">thomas.freeman@hgst.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">





<div lang="EN-US" link="blue" vlink="purple">
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Hi Paraq… thanks for the feedback.
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I’ll remove the reference to SetWmiDataBlock.</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#5b9bd5"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">In my notes, I forgot to mention the change I made for mode SntiHardCodeCacheModePage. With the change from the last patch, SCSI compliance was failing on Windows
 7. (The failure is shown below</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f4e79">).  Using
</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f4e79;background:white">PMODE_CACHING_PAGE_EX</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f4e79">
 for all Windows versions allowed us to successfully complete that test. I conferred with Alex offline about this fix – he indicated that he had intended to include this in Patch#27. 
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f4e79">Alex, do you have any comments on this issue?</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f4e79"><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f4e79"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Policy: REQUIRED<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Start: MODE SELECT 6: MODE SENSE (6) Checking Caching Mode Page Length., TUID=<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Description: Checking the Caching Mode Page is 20 bytes.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Reference: SCSI Primary Commands - 3 (SPC-3) Revision 23 (or published) specification Section 6.7
<a href="http://www.t10.org/ftp/t10/drafts/spc3/spc3r23.pdf" target="_blank">http://www.t10.org/ftp/t10/drafts/spc3/spc3r23.pdf</a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Expectation: cachePageLength == 20 bytes.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">MODE: Cache page length is 0xc.<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Tom Freeman<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Software Engineer,</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> Device Manager and Driver Development
<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">HGST, a Western Digital company<u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><a href="mailto:Thomas.Freeman@hgst.com" target="_blank"><span style="color:#0563c1">Thomas.Freeman@hgst.com</span></a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><a href="tel:507-322-2311" value="+15073222311" target="_blank">507-322-2311</a><u></u><u></u></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><u></u> <u></u></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> Parag Sheth [mailto:<a href="mailto:parag.sheth@seagate.com" target="_blank">parag.sheth@seagate.com</a>]
<br>
<b>Sent:</b> Tuesday, September 30, 2014 6:07 PM<br>
<b>To:</b> Alex Chang<br>
<b>Cc:</b> Thomas Freeman; <a href="mailto:nvmewin@lists.openfabrics.org" target="_blank">nvmewin@lists.openfabrics.org</a><br>
<b>Subject:</b> Re: [nvmewin] HGST Changes to Enable WMI, Driver Trace and various fixes<u></u><u></u></span></p>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">Hi Tom,<u></u><u></u></p>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">1. Your change in function SntiHardCodeCacheModePage (nvmesnti.c) overturns the fix made in last patch.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">2. Function SetWmiDataBlock (nvmeWmi.c & .h) is never used. It can be removed.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Other than these 2, the patch looks fine.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Parag Sheth<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"><u></u> <u></u></p>
<div>
<p class="MsoNormal">On Tue, Sep 30, 2014 at 8:18 AM, Alex Chang <<a href="mailto:Alex.Chang@pmcs.com" target="_blank">Alex.Chang@pmcs.com</a>> wrote:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Thank you, Parag.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I know we allocate one extra page intentionally. When people don’t know the trick, the original order
 simply avoids some concern.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Alex</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></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""> Thomas Freeman [mailto:<a href="mailto:thomas.freeman@hgst.com" target="_blank">thomas.freeman@hgst.com</a>]
<br>
<b>Sent:</b> Tuesday, September 30, 2014 7:50 AM<br>
<b>To:</b> Parag Sheth; Alex Chang<br>
<b>Cc:</b> <a href="mailto:nvmewin@lists.openfabrics.org" target="_blank">nvmewin@lists.openfabrics.org</a><br>
<b>Subject:</b> RE: [nvmewin] HGST Changes to Enable WMI, Driver Trace and various fixes</span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Thank you Paraq… I like your explanation.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">In addition to your explanation, I’d also say the drivers uses pCplQStart -> (pCplQstart + queueSize
 -1) for the completion queue.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">That is also the address range used in that memset. If those address are wrong, then the CompletionQueue
 itself is wrong. </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Alex…. Yes, I’ll change the RtlZeroMemory to memset. I’m not sure why I didn’t use memset to begin
 with.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Tom Freeman</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Software Engineer, Device Manager and Driver Development
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">HGST, a Western Digital company</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><a href="mailto:Thomas.Freeman@hgst.com" target="_blank"><span style="color:#0563c1">Thomas.Freeman@hgst.com</span></a></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"><a href="tel:507-322-2311" target="_blank">507-322-2311</a></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> Parag Sheth [<a href="mailto:parag.sheth@seagate.com" target="_blank">mailto:parag.sheth@seagate.com</a>]
<br>
<b>Sent:</b> Monday, September 29, 2014 8:32 PM<br>
<b>To:</b> Alex Chang<br>
<b>Cc:</b> Thomas Freeman; <a href="mailto:nvmewin@lists.openfabrics.org" target="_blank">
nvmewin@lists.openfabrics.org</a><br>
<b>Subject:</b> Re: [nvmewin] HGST Changes to Enable WMI, Driver Trace and various fixes</span><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">Hi Alex,<u></u><u></u></p>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Tom's change related to your point # 2 seems right. <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Here is my explanation.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- While allocating memory for submission queue + completion queue + command entries, there is 1 additional memory page allocated.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- Because this allocation is page aligned to begin with, sub queue start is always page aligned.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- making completion queue page aligned might use 1 additionally allocated page.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- command entries need not be page aligned.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">- And all these 3 things are initialized in the above order.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">So I think clearing memory for completion queue must be done only after page align macro. Let me know if I am missing anything here.<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Thanks<u></u><u></u></p>
</div>
<div>
<p class="MsoNormal">Parag Sheth<u></u><u></u></p>
</div>
</div>
<div>
<p class="MsoNormal"> <u></u><u></u></p>
<div>
<p class="MsoNormal">On Mon, Sep 29, 2014 at 11:18 AM, Alex Chang <<a href="mailto:Alex.Chang@pmcs.com" target="_blank">Alex.Chang@pmcs.com</a>> wrote:<u></u><u></u></p>
<blockquote style="border:none;border-left:solid #cccccc 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt">
<div>
<p class="MsoNormal"><img border="0" width="100" height="100" src="cid:image001.gif@01CFDD5D.E50FF900"><u></u><u></u></p>
<div>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Hi Tom,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">I have the following comments after browsing the changes you’ve made:</span><u></u><u></u></p>
<p><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">1.</span><span style="font-size:7.0pt;color:#1f497d">      
</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">In line 184 of nvmestd.c, can RtlZeroMemory be replaced by memset ?</span><u></u><u></u></p>
<p><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">2.</span><span style="font-size:7.0pt;color:#1f497d">      
</span><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">In line 1195 of nvmeinit.c, you moved down memset after page align macro for completion queue start. In case of the original completion queue start wasn’t page aligned, memset
 will clear the memory it shouldn’t.</span><u></u><u></u></p>
<p><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></p>
<p><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Thanks,</span><u></u><u></u></p>
<p><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d">Alex</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1f497d"> </span><u></u><u></u></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" target="_blank">nvmewin-bounces@lists.openfabrics.org</a> [mailto:<a href="mailto:nvmewin-bounces@lists.openfabrics.org" target="_blank">nvmewin-bounces@lists.openfabrics.org</a>]
<b>On Behalf Of </b>Thomas Freeman<br>
<b>Sent:</b> Wednesday, September 24, 2014 11:55 AM<br>
<b>To:</b> <a href="mailto:nvmewin@lists.openfabrics.org" target="_blank">nvmewin@lists.openfabrics.org</a><br>
<b>Subject:</b> [nvmewin] HGST Changes to Enable WMI, Driver Trace and various fixes</span><u></u><u></u></p>
</div>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
<pre>Content-Type: text/plain; charset=UTF-8<u></u><u></u></pre>
<pre>Content-Transfer-Encoding: 8bit<u></u><u></u></pre>
<pre>Date: %%SENT_DATE%%<u></u><u></u></pre>
<pre>Subject: Suspect Message Quarantined <u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre>WARNING: The virus scanner was unable to scan an attachment in an email message sent to you.  This attachment could possibly contain viruses or other malicious programs.  The attachment could not be scanned for the following reasons:<u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre>%%DESC%%<u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre>The full message and the attachment have been stored in the quarantine.<u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre>The identifier for this message is '%%QID%%'.<u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre>Access the quarantine at: <u></u><u></u></pre>
<pre><a href="https://puremessage.pmc-sierra.bc.ca:28443/" target="_blank">https://puremessage.pmc-sierra.bc.ca:28443/</a><u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre>For more information on PMC's Anti-Spam system:<u></u><u></u></pre>
<pre><a href="http://pmc-intranet/wiki/index.php/Outlook:Anti-Spam_FAQ" target="_blank">http://pmc-intranet/wiki/index.php/Outlook:Anti-Spam_FAQ</a><u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<pre>IT Services<u></u><u></u></pre>
<pre>PureMessage Admin <u></u><u></u></pre>
<pre> <u></u><u></u></pre>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">The attached zip file contains source code, project files and instructional documents for WMI and Driver tracing.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">The password is “hgst1234”</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">We tested the changes on w7, w8 and w8.1 – 64-bit</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Testing included sdstress, iometer, quick and slow format: MBR and GPT and scsi compliance.
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Here is a description of the various changes:</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:"Calibri","sans-serif"">WMI
</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">(WindowsWmiDesc.pdf in the attached zip file gives details on using the change)</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvme.vcxproj - Menu for "Mof Compiler"</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Create Binary Mof File = "../../source/%(FileName).bmf"</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -WMI Syntax Check = Yes (-WMI)</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">   menu for Linker->Input</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -added $(DDK_LIB_PATH)\scsiwmi.lib</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">   directly in the file. This directive causes VS to create nvmeMofData.h:</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">  <ItemGroup></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">    <Wmimofck Include="../../source/nvmeMofData.bmf"></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">      <HeaderOuputFile>"$(IntDir)nvmeMofData.h"</HeaderOuputFile></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">      <AdditionalOptions>-u -h"$(IntDir)nvmeMofData.h"</AdditionalOptions></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">    </Wmimofck></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">  </ItemGroup></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">               
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvme.rc - Added "mofResource" statement</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeMofData.bmf - Visual studio generates this file on every compile. Exists in the "source" directory.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeMofData.mof – Used to define WMI obects. Exists in the "source" directory</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeMofData.h - Visual studio generates during compile. It is created based on nvmeMofData.mof. It exists in the
 project's intermediate directory (e.g. nvme/x64/Win7Debug). </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeStd.c
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -NVMeFindAdapter - indicate that the driver is a wmiProvider and initialize the wmiContext.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -NVMeBuildIo - Allow calls to WMI</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">        -NVMeStartIo - Allow calls to WMI</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeStd.h</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -WmiLibContext - Added this structure to the device extension. The WmiLibContext structure provides
 registration information for a miniport driver's data and event blocks and defines entry points for the miniport driver's HwScsiWmiXxx callback routines.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -WmiReqContext - Added this structure to the srb extension. When processing a WMI command, this
 structure is used to save context information for that particular command.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">precomp.h</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -added guiddef.h, scsiwmi.h, initguid.h, nvmeMofData.h, nmeWmi.h</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:"Calibri","sans-serif"">WPP - Driver tracing
</span></b><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">(WindowsTraceCollection.pdf in the attached zip file gives details on using the change)</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Relied heavily on the document "Using Storage Tracing Support In Miniport Drivers" -
<a href="http://download.microsoft.com/download/8/e/8/8e85288f-b718-47d9-a7b2-af19d4c8f031/Storage-tracing-for-miniports.doc" target="_blank">
http://download.microsoft.com/download/8/e/8/8e85288f-b718-47d9-a7b2-af19d4c8f031/Storage-tracing-for-miniports.doc</a></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvme.vcxproj - in the Menu for "Wpp Tracing"</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Func to Gen Trace = StorStorPortDebugPrint(LEVEL,MSG,...)</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Run Wpp Tracing = Yes</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Scan Configuration Data = ..\..\source\nvme_tracing.h</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Specify Template File = {km-StorDefault.tpl}*.tmh</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Trace Kernel-Mode Components = Yes (-km)</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">All c-files: Added include for "nvmeinit.tmh". A Visual Studio generated file to support driver tracing.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeStd.c - create a global variable for storing the trace context information. At cleanup time, the Port Driver
 calls a cleanup routine that uses this global variable.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -DriverEntry - Include code to initialize driver tracing through wpp.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -WppCleanupRoutine - Added code to be called by the port driver to clean up driver tracing.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeStd.h -
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -add function prototype for Wpp Cleanup routine.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">        -Changed values for debug print levels to match values in evntrace.h</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">    INFO = TRACE_LEVEL_INFORMATION,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">    WARNING = TRACE_LEVEL_WARNING,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">    ERROR = TRACE_LEVEL_ERROR,</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">    TRACE = TRACE_LEVEL_VERBOSE</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">precomp.h</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -added nvme_tracing.h</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;font-family:"Calibri","sans-serif"">Various Fixes</span></b><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvme.vcxproj</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Changed c/c++ compiler warning level to W3/WX</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeSnti.c</span>
<u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">   SntiTranslateReadCapacity16 - The caller’s response buffer was being cleared and set up without regard to its
 size. I put in changes to allocate a read capacity buffer on the stack. Once that temporary buffer was filled in, I used the response buffer size to determine how much data to copy into the caller’s response buffer.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif";color:#c00000">NOTE: It appears this same issue occurs in the handling of other scsi commands (e.g. in
</span><span style="font-size:9.5pt;font-family:Consolas;color:#c00000;background:white">SntiTranslateDeviceIdentificationPage</span><span style="font-size:9.5pt;font-family:Consolas;color:#c00000">, if the response buffer was too short, setting the fields
 in <span style="background:white">pIdDescriptor</span> would overrun the response buffer). This may be a fix to be implemented in the future. The issue in SntiTranslateReadCapacity16 issue was seen during testing. The potential issue with
<span style="background:white">SntiTranslateDeviceIdentificationPage</span> has not occurred in our testing.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:9.5pt;font-family:Consolas"> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">   SnitTranslateUnmap   
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Changes to ensure the DataSetManagement buffer was always 16-byte aligned.
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Use prp2 to allow the prplist to cross a page boundary
</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -When building the dsm-deallocate command, cdw10->NR was used to count the number of ranges - starting
 with the value 1. Since NR is a zero-based value, the count was decremented when command building was completed. Unfortunately, when 256 ranges are specified, NR has a value of 0 before decrementing. The value of 0 prevented the code from decrementing NR.
 A change was made to use a local uint16 variable to cound the number of ranges.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">    SntiTranslateWriteBuffer - The existing code set dword10 as a 1-based value. A change was made to correctly
 set this as a zero-based value.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">    SntiTranslateLogSense - A pointer to the data buffer is saved in the srb extension. A change was made to also
 save the data buffer length in the srb extension. The value is used when the data buffer is freed.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">nvmeStd.h</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">                -Increase size of dsmBuffer to allow for 16-byte alignment.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">        -add dataBufferSize to store size of data buffer allocated for log sense command.</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Tom Freeman</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""> </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">Software Engineer,<span style="color:#1f497d">
</span>Device Manager and Driver Development </span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif"">HGST, a Western Digital company</span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><a href="mailto:Thomas.Freeman@hgst.com" target="_blank"><span style="color:#0563c1">Thomas.Freeman@hgst.com</span></a></span><u></u><u></u></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri","sans-serif""><a href="tel:507-322-2311" target="_blank">507-322-2311</a></span><u></u><u></u></p>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
_______________________________________________<br>
nvmewin mailing list<br>
<a href="mailto:nvmewin@lists.openfabrics.org" target="_blank">nvmewin@lists.openfabrics.org</a><br>
<a href="http://lists.openfabrics.org/mailman/listinfo/nvmewin" target="_blank">http://lists.openfabrics.org/mailman/listinfo/nvmewin</a><u></u><u></u></p>
</blockquote>
</div>
<p class="MsoNormal"> <u></u><u></u></p>
</div>
</div>
</div>
</blockquote>
</div>
<p class="MsoNormal"><u></u> <u></u></p>
</div>
</div>
</div>

</blockquote></div><br></div>