[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