<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=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (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:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@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;}
@font-face
        {font-family:"\@SimSun";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Verdana;
        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";}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle23
        {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">Hello Mike,<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">Thank you for the pointer.<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">I am currently designing a driver for device production/integration phase.<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">So my goal is to bypass all OS designed functionality and actually run the command “as is”.<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">In any case, I see that the community driver is very well designed modularity wise.<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">Namely, the driver already has all routines I need in order to issue Read/Write using PASSTHROUGH – I just need to “glue” them.<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">Once I am done, if this will be of interest to the community, I will gladly  share my debugging version of the driver.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><b><span style="font-size:14.0pt;color:#1F497D">Sagi Bar</span></b><b><span style="color:#1F497D"><br>
Test & Tools Staff FW Engineer<br>
</span></b><span style="font-size:12.0pt;font-family:"Times New Roman","serif";color:#1F497D"><img width="61" height="12" id="_x0000_i1028" src="cid:image001.png@01CFA9A0.F13FDE70" alt="cid:image001.png@01CEA3CD.FE1957E0"><br>
<br>
</span><span style="color:#7F7F7F"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><a href="mailto:sagi.bar@SanDisk.com">sagi.bar@SanDisk.com</a><o:p></o:p></span></p>
</div>
<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""> Mike Berhan [mailto:mikeb@bustrace.com]
<br>
<b>Sent:</b> Thursday, July 24, 2014 8:42 PM<br>
<b>To:</b> Sagi Bar; nvmewin@lists.openfabrics.org<br>
<b>Cc:</b> Roman Goldshtein<br>
<b>Subject:</b> RE: [nvmewin] Implementing a debug purpose Read/Write using IOCTL_SCSI_MINIPORT<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Sagi,<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">The disk class driver is the one that divides reads and writes into smaller requests.  It determines how to divide the request by querying the STORAGE_ADAPTER_DESCRIPTOR.  STORPORT gets the information for this
 structure from the miniport’s PORT_CONFIGURATION_INFORMATION structure (MaximumTransferLength and NumberOfPhysicalBreaks).<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">In reviewing the NVMe source code, it sets these values to max 128K with a registry override available.  The INF file sets the override but it too defaults to 128K:<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">                                                                                                                                                                                                                                           
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier New"">HKR, Parameters\Device, MaxTXSize, %REG_DWORD%, 0x00020000 ; max trasnfer size<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal"><span style="color:#1F497D">Mike Berhan<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">busTRACE Technologies<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D;background:white">1-208-629-4773</span><span style="color:#1F497D"> (Office)<o:p></o:p></span></p>
</div>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b>From:</b> <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>Sagi Bar<br>
<b>Sent:</b> Thursday, July 24, 2014 4:23 AM<br>
<b>To:</b> Alex Chang; <a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a><br>
<b>Cc:</b> Roman Goldshtein<br>
<b>Subject:</b> Re: [nvmewin] Implementing a debug purpose Read/Write using IOCTL_SCSI_MINIPORT<o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hello 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">Thank you for your answer.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I see that the driver has a readily implemented
</span><span style="font-family:"Verdana","sans-serif";color:#010001;background:white;mso-highlight:white">NVMePreparePRPs</span><span style="font-family:"Verdana","sans-serif";color:#010001">(…)</span><span style="color:#1F497D"> so adding an extra command
 shouldn’t be an issue.<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">I might need this feature in order to prevent the StorPort driver from dividing the request into smaller SRBs (debug purposes).<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">Thank you, <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"><o:p> </o:p></span></p>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt"><b><span style="font-size:14.0pt;color:#1F497D">Sagi Bar</span><span style="color:#1F497D"><br>
Test & Tools Staff FW Engineer<br>
</span></b><span style="font-size:12.0pt;font-family:"Times New Roman","serif";color:#1F497D"><img border="0" width="61" height="12" id="_x0000_i1025" src="cid:image001.png@01CFA9A0.F13FDE70" alt="cid:image001.png@01CEA3CD.FE1957E0"><br>
</span><span style="color:#7F7F7F">7 Atir Yeda St, Kfar – Saba 44425, Israel<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><a href="mailto:sagi.bar@SanDisk.com">sagi.bar@SanDisk.com</a><o:p></o:p></span></p>
</div>
<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""> Alex Chang [<a href="mailto:Alex.Chang@pmcs.com">mailto:Alex.Chang@pmcs.com</a>]
<br>
<b>Sent:</b> Wednesday, July 23, 2014 2:35 AM<br>
<b>To:</b> Sagi Bar; <a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a><br>
<b>Cc:</b> Roman Goldshtein<br>
<b>Subject:</b> RE: [nvmewin] Implementing a debug purpose Read/Write using IOCTL_SCSI_MINIPORT<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">Hi Sagi,<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">Yes, you’re right that it’s due to security reasons and, in addition, you may access the associated storage as a physical or formatted drive with Windows supported APIs for your debugging purposes, like IOMeter
 does.<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">Alex<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>Sagi Bar<br>
<b>Sent:</b> Tuesday, July 22, 2014 5:21 AM<br>
<b>To:</b> <a href="mailto:nvmewin@lists.openfabrics.org">nvmewin@lists.openfabrics.org</a><br>
<b>Cc:</b> Roman Goldshtein<br>
<b>Subject:</b> [nvmewin] Implementing a debug purpose Read/Write using IOCTL_SCSI_MINIPORT<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">Hello Guys,<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">I would like to implement a debug purpose flow of performing NVME disk IO bypassing the StorPort under Windows 8.1.<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">I thought about implementing it using “IOCTL_SCSI_MINIPORT” on host side and adding code under “</span><span style="font-family:"Verdana","sans-serif";color:#010001;background:white;mso-highlight:white">NVM_WRITE</span><span style="font-family:"Verdana","sans-serif";color:#010001">/<span style="background:white;mso-highlight:white">
 NVM_</span>READ” </span><span style="color:#1F497D">on the target side.<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">I wonder whether anyone here has done it before and can share insights.<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">Moreover, Is there any particular reason why NVME READ/WRITE commands are not implanted via IOCTL interface, except security ?<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">Thank you,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:14.0pt;color:#1F497D">Sagi Bar</span><span style="color:#1F497D"><br>
Test & Tools Staff FW Engineer<br>
</span></b><span style="font-size:12.0pt;font-family:"Times New Roman","serif";color:#1F497D"><img border="0" width="61" height="12" id="Picture_x0020_1" src="cid:image001.png@01CFA9A0.F13FDE70" alt="cid:image001.png@01CEA3CD.FE1957E0"><br>
</span><span style="color:#7F7F7F">7 Atir Yeda St, Kfar – Saba 44425, Israel<br>
</span><span style="color:#1F497D"><a href="mailto:sagi.bar@SanDisk.com">sagi.bar@SanDisk.com</a></span><span style="color:#7F7F7F"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></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"><span style="font-size:10.0pt;font-family:"Arial","sans-serif";color:gray"><br>
PLEASE NOTE: The information contained in this electronic mail message is intended only for the use of the designated recipient(s) named above. If the reader of this message is not the intended recipient, you are hereby notified that you have received this
 message in error and that any review, dissemination, distribution, or copying of this message is strictly prohibited. If you have received this communication in error, please notify the sender by telephone or e-mail (as shown above) immediately and destroy
 any and all copies of this message in your possession (whether hard copies or electronically stored copies).</span><span style="font-size:12.0pt;font-family:"Times New Roman","serif""><o:p></o:p></span></p>
</div>
</body>
</html>