[nvmewin] Review Driver Development Status

Judy Brock-SSI judy.brock at ssi.samsung.com
Mon Jun 17 05:52:01 PDT 2013


Kwok ,

To submit patches for the Samsung  items below, should I wait for the Sandisk patch (currently last in line behind LSI, IDT, and Intel I think) to be resubmitted and accepted and then submit our patches based on the then-current top of tree?

I'm pasting code snippets meanwhile (see below) s o I can incorporate any early feedback that may be available. All changes are in yellow highlight. Also, one other miscellaneous bug:

   In nvmeSntiTypes.h:

      added  #define NUM_BYTES_IN_DWORDS      4

   In nvmeSnti.c, in function SntiTranslateWriteBuffer():
            . . .
   case DOWNLOAD_SAVE_ACTIVATE:
                                /* Issue NVME FIRMWARE IMAGE DOWNLOAD command */
               dword10 |= paramListLength / NUM_BYTES_IN_DWORDS;

   case DOWNLOAD_SAVE_DEFER_ACTIVATE:
                                /* Issue NVME FIRMWARE IMAGE DOWNLOAD command */
               dword10 |= paramListLength / NUM_BYTES_IN_DWORDS;

"Format NVM Error" patch:

      BOOLEAN FormatNVMFailure(
          PNVME_DEVICE_EXTENSION pDevExt,
          PNVME_SRB_EXTENSION pSrbExt
      )
      {
          PFORMAT_NVM_INFO pFormatNvmInfo = &pDevExt->FormatNvmInfo;

      #if LEAVE_ORPHANED_REQUEST_OUTSTANDING // Q. is original code needed for something? Looks like it was intentional but results in lost req
          /*
           * Depends on AddNamespaceNeeded:
           * If TRUE, add back the namespace(s) via calling NVMeIoctlHotAddNamespace.
           *          and return FALSE since the request will be completed later.
           * If FALSE, Clear the FORMAT_NVM_INFO structure and return TRUE
           *          to let caller complete the request.
           */
          if (pFormatNvmInfo->AddNamespaceNeeded == TRUE) {
              /* Need to add back namespace(s) first */
              NVMeIoctlHotAddNamespace(pSrbExt);
              return FALSE;
          } else {
              /*
               * Reset FORMAT_NVM_INFO structure to zero
               * since the request is completed
               */
              memset((PVOID)pFormatNvmInfo, 0, sizeof(FORMAT_NVM_INFO));
              return TRUE;
          }
      #else
          /*
           * If AddNamespaceNeeded is TRUE, add back the namespace(s) via
         * NVMeIoctlHotAddNamespace. Then clear the FORMAT_NVM_INFO structure and
         * return TRUE in order to complete the request. Since we hit an error
         * we need to finish it.
           */

        if (pFormatNvmInfo->AddNamespaceNeeded == TRUE) {
              /* Need to add back namespace(s) first */
              NVMeIoctlHotAddNamespace(pSrbExt);
        }
          /*
           * Reset FORMAT_NVM_INFO structure to zero
           * since the request is completed
           */
          memset((PVOID)pFormatNvmInfo, 0, sizeof(FORMAT_NVM_INFO));
          return TRUE;

      #endif /* !LEAVE_ORPHANED_REQUEST_OUTSTANDING */

      }

"Not handling CSTS.RDY status (from 1->0 and 0->1) properly on NVMe reset" patch:

      * @return BOOLEAN
       *     TRUE  - If Adapter is enabled correctly
       *     FALSE - If anything goes wrong
       ******************************************************************************/
      BOOLEAN NVMeEnableAdapter(
          PNVME_DEVICE_EXTENSION pAE
      )
      {
          PQUEUE_INFO pQI = &pAE->QueueInfo;
          NVMe_CONTROLLER_CONFIGURATION CC = {0};
          NVMe_CONTROLLER_STATUS CSTS;
          ULONG PollMax = pAE->uSecCrtlTimeout / MAX_STATE_STALL_us;
          ULONG PollCount;

      . . .

          StorPortWriteRegisterUlong(
              pAE,
              (PULONG)(&pAE->pCtrlRegister->ACQ.HighPart),
              (ULONG)(pQI->pCplQueueInfo->CplQStart.HighPart));


          StorPortDebugPrint(INFO, "NVMeEnableAdapter:  Setting EN...\n");
          /*
           * Set up Controller Configuration Register
           */

      /* After reset, we must wait for CSTS.RDY == 0 before setting CC.EN to 1 */

          for (PollCount = 0; PollCount < PollMax; PollCount++) {
              CSTS.AsUlong = StorPortReadRegisterUlong(pAE,
                                 (PULONG)(&pAE->pCtrlRegister->CSTS.AsUlong));

              if (CSTS.RDY == 0) {
                  /* Move on if RDY bit is cleared */
                  break;
              }

              NVMeStallExecution(pAE, MAX_STATE_STALL_us);
          }

          if (CSTS.RDY != 0) {
              /* If RDY bit won't clear we can't enable the adapter */
              return FALSE;
          }

          CC.EN = 1;
          CC.CSS = NVME_CC_NVM_CMD;
          CC.MPS = (PAGE_SIZE >> NVME_MEM_PAGE_SIZE_SHIFT);
          CC.AMS = NVME_CC_ROUND_ROBIN;
          CC.SHN = NVME_CC_SHUTDOWN_NONE;
          CC.IOSQES = NVME_CC_IOSQES;
          CC.IOCQES = NVME_CC_IOCQES;

          StorPortWriteRegisterUlong(pAE,
                                     (PULONG)(&pAE->pCtrlRegister->CC),
                                     CC.AsUlong);
      return TRUE;

      } /* NVMeEnableAdapter */


      In NVMeInitialize():
      ...
          if ((NVMeEnableAdapter(pAE)) == FALSE) {
                    return (FALSE);
                }


      In NVMeInitAdminQueues ():

      ...
          if ((NVMeEnableAdapter(pAE)) == FALSE) {
                    return (FALSE);
                }

      In nvmeStd.h:

      BOOLEAN NVMeEnableAdapter(
          __in PNVME_DEVICE_EXTENSION pAE
      );


Thanks,
Judy

-----Original Appointment-----
From: Kong, Kwok
Sent: Friday, June 07, 2013 10:01 AM
To: Kong, Kwok; 'nvmewin at lists.openfabrics.org'
Cc: Chang, Alex; Bart Bartel; Knoblaugh, Rick; Murray, Kris R; Bob Griswold; Steven Shrader; Dave Landsman; Robert Randall (rrandall); Brandon.Schulz at hgst.com; Yong Chen; Neal Galbo (ngalbo); Judy Brock-SSI; Javier Castro-SSI; Bruce Langworthy; Nathan Obr; Thomas.Freeman at hgst.com
Subject: [nvmewin] Review Driver Development Status - Sorry, I have to reschedule
When: Monday, June 17, 2013 1:00 PM-2:00 PM (UTC-08:00) Pacific Time (US & Canada).
Where: Conf call



You are invited to attend an AT&T Connect iMeeting .

To connect to the Web Conference:
=============================
Click here: https://connect9.uc.att.com/service32/meet/?ExEventID=8811938&CT=M

TO CONNECT WITH YOUR *TELEPHONE ONLY* (no computer):
===================================================
1. Choose one of the following numbers to dial:
If you are calling from an office location with on-site number(s) (listed below), try this number first. If you do not have on-site access, or you are not a member of the host's company/organization, use one of the other numbers shown.
      * Caller-Paid number: 602-333-0032
      * Toll-Free Number (in USA): 888-270-9936.
      * Blackberry (Caller-Paid): 6023330032x811938#
      * A number in your country or in a country close to you (may be toll free): https://www.teleconference.att.com/servlet/glbAccess?process=1&accessNumber=8882709936&accessCode=811938
2. When prompted, enter the Meeting Access Code: 811938#



To prepare in advance for the conference (for all devices): https://connect9.uc.att.com/service32/Prepare/.

To view supported Operating Systems and devices: http://www.uc.att.com/support/SupportedDevices.html

Powered by AT&T Connect.


Agenda:
*       Review Release 1.2 Status
*       - Supports the following Windows versions in addition to Windows 7 - 64 bits (IDT)
*           - Windows 8 64-bit
*           - Windows Server 2008R2 64-bit
*           - Windows Server 2012 64-bit
*
*       - TRIM command support           (LSI)
*       - NVMe 1.00e enhancement         (IDT)
*       - Hibernation as a boot drive   (Huawei)
*       Review Known problems Status
- Not Accessing NVMe registers in their native width. (Ray - Intel)
- ModeSense Translation issue. (Dharani - SanDisk)
- format nvm error. (Judy - Samsung)
- Not handling CSTS.RDY status (from 1->0 and 0->1) properly on NVMe reset. (Judy - Samsung)

*       SCSI Translation Update (Yong Chen - Huawei)
*       Release 1.3 Discussion
- Support additional Windows versions
    - Windows 7 32-bit
    - Windows 8 32-bit

- Windows 8 features:
    - Extended SRB format
    - SMART handling via new Extended SRB format

Features that will not be supported in 2013 (will be reviewed mid-year):
        NVMe 1.1 support:
- multi-path
- SGL
- Get/Set feature update
                - Autonomous power state transition
                - Host Identifier
                - Reservation Notification Mask
                - Reservation Persistence
- identify structure update
- write zeros command

Other feature:
- End-to-end protection (Server 2012 support this)



  << File: ATT00001.txt >>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openfabrics.org/pipermail/nvmewin/attachments/20130617/128c2d76/attachment.html>


More information about the nvmewin mailing list