<HTML xmlns:o><HEAD><TITLE>Samsung Enterprise Portal mySingle</TITLE>
<META content=IE=5 http-equiv=X-UA-Compatible>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<STYLE id=mysingle_style type=text/css>P {
        MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
}
TD {
        MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
}
LI {
        MARGIN-BOTTOM: 5px; FONT-SIZE: 9pt; FONT-FAMILY: Arial, arial; MARGIN-TOP: 5px
}
BODY {
        FONT-SIZE: 9pt; FONT-FAMILY: Arial, arial; MARGIN: 10px; LINE-HEIGHT: 1.4
}
</STYLE>

<META name=GENERATOR content=ActiveSquare></HEAD>
<BODY>
<P><SPAN style="FONT-FAMILY: Calibri"></SPAN><SPAN style="FONT-SIZE: 12pt"></SPAN><SPAN style="FONT-FAMILY: Calibri"></SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">Hi Everyone,</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">We have a patch for the following random bug fixes. We have merged our changes over OFA Revision 106.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">1) Handling return value for NVMeWaitForCtrlRDY. NVMeWaitForCtrlRDY should have a return value of type BOOLEAN that can be checked to see if it was successful or not.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">2) Handling return value for NVMeCompleteCmd. NVMeCompleteCmd should have a return value that can be checked to see if it was successful or not. Right now, wherever it’s called from the code forges ahead regardless of whether it succeeded or failed.</SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">3) Fixing the NVMeResetAdapter issues to check if CC.EN is set to 1 before setting to 0.<BR>The routine NVMeResetAdapter() sets CC.EN to 0 without ever checking to make sure that CSTS.RDY is set to ‘1’ first. This check has to be included in this routine. Since it is not, there are many paths in the driver where there is no prior check for this condition:<BR>a) NVMeInitAdminQueues -> NVMeEnableAdapter -> NVMeResetAdapter<BR>b) NVMeNormalShutdown -> NVMeResetAdapter<BR>c) NVMeAdapterControlPowerDown -> NVMeResetAdapter<BR>d) NVMeSynchronizeReset -> NVMeResetAdapter<BR> <BR>4) Memory corruption while creating inquiry response data -  In SntiTranslateStandardInquiryPage(), the following line of code is accessing a field way past the end of STANDARD_INQUIRY_LENGTH (36 bytes): pStdInquiry->Reserved3[0]  = RESERVED_FIELD;<BR> <BR>5) Eliminate NVMeWaitOnReady and use only NVMeWaitForCtrlRDY. There is redundancy in the new routine NVMeWaitForCtrlRDY() and the old routine NVMeWaitOnReady(). We don’t need both – we can get rid of the old routine.<BR> <BR>6) Fixed the RecoveryDpcRoutine to avoid redundant setting of CC.EN bit to 0. The code does not need to set CC.EN to ‘0’ and then wait for CSTS.RDY to become 0 because right after it does so, it calls NVMeResetAdapter which does the exact same thing.<BR> <BR>7) Write Buffer implementation correction.<BR>a. Calculation of dword10 for DOWNLOAD_SAVE_ACTIVATE and DOWNLOAD_SAVE_DEFER_ACTIVATE is modified. <BR>b. Set the SRB Status value for NVMe command failure condition in SntiCompletionCallbackRoutine.<BR>c. Prepare the Firmware Activate Command and issue the command in case of DOWNLOAD_SAVE_ACTIVATE mode in SntiTranslateWriteBufferResponse.<BR>d. Handled the scenario of SNTI_SEQUENCE_IN_PROGRESS for Write Data Buffer command.<BR> <BR>8) Enabling Eject option in the taskbar.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">9) StorPortGetScatterGatherList() - The second parameter pSrb is typecasted to PSCSI_REQUEST_BLOCK. But as per msdn, for Win8/8.1 kernel, it will be PSTORAGE_REQUEST_BLOCK. So it is OK to just pass pSrb which is already either PSCSI_REQUEST_BLOCK or PSTORAGE_REQUEST_BLOCK.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">10) SntiTranslateReadCapacity10() - When the disk capacity is more than 2TB, according to the SCSI command spec (SBC-3), READ CAPACITY (10) command should return 0xFFFF FFFF as "Returned Logical Block Address" if lba is greater than the DWORD unit. This specification is, of course, considered in SCSI translation code. However 'minus 1' code which should not be applied in this case is executed. This makes device capacity to be 2TB (0xFFFF FFFE x 0x200 = 2047.99GB).</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">11) SntiTranslateRequestSense() - No need to separately get pSenseData for win7 and Win8. The GET_DATA_BUFFER will be defined to (SrbGetDataBuffer((PVOID)pSrb)) for Win8 and (pSrb)->DataBuffer for win7.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">12) SntiBuildGetLogPageCmd() - The numDwords for ERROR_INFORMATION, SMART_HEALTH_INFORMATION and FIRMWARE_SLOT_INFORMATION is corrected to be number of dwords - 1 value.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">13) NVMeProcessPublicIoctl() - For IOCTL_SCSI_MINIPORT_READ_SMART_THRESHOLDS, the pSrbExt->nvmeSqeUnit.CDW10 value is corrected to be number of dwords - 1 value.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">14) With OFA Revision 106 driver, the SCSI Compliance test is failing in our setup (please find attached the scsicompliance test failure log)<BR>a) MODE SELECT 6: MODE SENSE (6) Checking Caching Mode Page Length.<BR>b) MODE SELECT 10: MODE SENSE (10) Checking Caching Mode Page Length.<BR>c) ASSERTION: INQUIRY Checking Identification Descriptors in VPD page 0x83.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">for fixing a) and b), we have to use PMODE_CACHING_PAGE for Win7 kernel and PMODE_CACHING_PAGE_EX for Win8/8.1 kernel. We have corrected this in this patch.<BR>for c), the implementation is not as per NVMe-SCSI translation specification. But even if we follow the specification, we don t get a uniqueid. So Judy has proposed to change the SCSI Name format so that we get unique id for each device. This proposal in pending for 30 day review. Once review is complete and approved, We will include the modifications in the next Samsung patch.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">15) Invalid return value for NVMeAdapterControl<BR>NVMeAdapterControl miniport routine -  sometimes returns illegal value. WDK specifies that the driver must always return ScsiAdapterControlSuccess. However, depending on execution, the driver may currently return ScsiAdapterControlUnsuccessful for ScsiStopAdapter and ScsiRestartAdapter control types. <BR>As per msdn – </SPAN><A href="http://msdn.microsoft.com/en-us/library/windows/hardware/ff557365(v=vs.85).aspx"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">http://msdn.microsoft.com/en-us/library/windows/hardware/ff557365(v=vs.85).aspx</SPAN></A><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"><BR> <BR>16) Handling StartIo deadlock when MultipleCoresToSingleQueueFlag is set.</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN class=Apple-style-span style="WHITE-SPACE: normal; WORD-SPACING: 0px; BORDER-COLLAPSE: separate; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: medium Verdana, Helvetica, Arial; ORPHANS: 2; WIDOWS: 2; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><SPAN class=Apple-style-span style="FONT-SIZE: 12px; FONT-FAMILY: Arial, arial; LINE-HEIGHT: 16px"><STRONG><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">Unit tests:</SPAN></STRONG><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri"><SPAN class=Apple-style-span style="WHITE-SPACE: normal; WORD-SPACING: 0px; BORDER-COLLAPSE: separate; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: medium Verdana, Helvetica, Arial; ORPHANS: 2; WIDOWS: 2; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><SPAN class=Apple-style-span style="FONT-SIZE: 12px; FONT-FAMILY: Arial, arial; LINE-HEIGHT: 16px"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"><BR>Tested the following on Win7 and Windows 2012R2.</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P><SPAN class=Apple-style-span style="WHITE-SPACE: normal; WORD-SPACING: 0px; BORDER-COLLAPSE: separate; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: medium Verdana, Helvetica, Arial; ORPHANS: 2; WIDOWS: 2; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><SPAN class=Apple-style-span style="FONT-SIZE: 12px; FONT-FAMILY: Arial, arial; LINE-HEIGHT: 16px"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri"><SPAN class=Apple-style-span style="WHITE-SPACE: normal; WORD-SPACING: 0px; BORDER-COLLAPSE: separate; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: medium Verdana, Helvetica, Arial; ORPHANS: 2; WIDOWS: 2; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><SPAN class=Apple-style-span style="FONT-SIZE: 12px; FONT-FAMILY: Arial, arial; LINE-HEIGHT: 16px"><SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: Calibri"><SPAN class=Apple-style-span style="WHITE-SPACE: normal; WORD-SPACING: 0px; BORDER-COLLAPSE: separate; TEXT-TRANSFORM: none; COLOR: rgb(0,0,0); FONT: medium Verdana, Helvetica, Arial; ORPHANS: 2; WIDOWS: 2; LETTER-SPACING: normal; TEXT-INDENT: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px"><SPAN class=Apple-style-span style="FONT-SIZE: 12px; FONT-FAMILY: Arial, arial; LINE-HEIGHT: 16px">
<P class=MsoListParagraph style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri, sans-serif; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in"><SPAN style="FONT-SIZE: 12pt">-</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri; FONT-VARIANT: normal; FONT-STYLE: normal; LINE-HEIGHT: normal">       </SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">Executed NVMe SCSI compliance tests</SPAN><o:p><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN></o:p></P>
<P class=MsoListParagraph style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri, sans-serif; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in"><SPAN style="FONT-SIZE: 12pt">-</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri; FONT-VARIANT: normal; FONT-STYLE: normal; LINE-HEIGHT: normal">       </SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">Executed IOmeter</SPAN></P>
<P class=MsoListParagraph style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri, sans-serif; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in"><SPAN style="FONT-SIZE: 12pt">-</SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri; FONT-VARIANT: normal; FONT-STYLE: normal; LINE-HEIGHT: normal">       </SPAN><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">Install/Uninstall, Enable/Disable driver, FS Format/hibernation.</SPAN></P>
<P class=MsoListParagraph style="FONT-SIZE: 11pt; FONT-FAMILY: Calibri, sans-serif; MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in"><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">-       Hot plug</SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"></SPAN> </P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">Thanks,</SPAN></P>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri">Suman<BR></SPAN></P>
<TABLE id=confidentialsignimg>
<TBODY>
<TR>
<TD NAMO_LOCK>
<P><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: Calibri"><IMG border=0 src="cid:9220TQUPH6HH@namo.co.kr"></SPAN></P></TD></TR></TBODY></TABLE></BODY></HTML><img src='http://ext.samsung.net/mailcheck/SeenTimeChecker?do=8fbbb8c66d1835ec15d0ac6f0f32e618b7fed04b4c1af5237d9badbdf7e30042d1afaaba7860cdcd9564217c646641ad61e16949eaa607501b20909a04efd4d2748cfe1d4e847419cf878f9a26ce15a0' border=0 width=0 height=0 style='display:none'>