[nvmewin] Review Driver Development Status

Chang, Alex Alex.Chang at idt.com
Mon Jun 17 08:56:00 PDT 2013


Hi Judy,

Yes, you're right that, currently, we have LSI, SanDisk and Intel patches in the pipeline. Your patch will be after them.

Thanks,
Alex


________________________________
From: Kong, Kwok
Sent: Monday, June 17, 2013 8:53 AM
To: Judy Brock-SSI; '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); Javier Castro-SSI; Bruce Langworthy; Nathan Obr; Thomas.Freeman at hgst.com
Subject: RE: [nvmewin] Review Driver Development Status


Judy,

Please wait for all the current active patches before sending Samsung patch out for review.

Alex is going to apply the patch and he is the one who controls the order.

Alex,

What is the current order for patches ?

Thanks

-Kwok





From: Judy Brock-SSI [mailto:judy.brock at ssi.samsung.com]
Sent: Monday, June 17, 2013 5:52 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); Javier Castro-SSI; Bruce Langworthy; Nathan Obr; Thomas.Freeman at hgst.com
Subject: RE: [nvmewin] Review Driver Development Status

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<mailto: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<mailto: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/24cfff76/attachment.html>


More information about the nvmewin mailing list