SM2260 Driver V1.3.0

	- First release

SM2260 Driver V1.3.1

	- NVMe Admin FW update flow: Change to use new PRP method. (NVMePreparePRPs => NVMePreparePRPs2)
	
SM2260 Driver V1.3.2.0
 - 1. Supported Vendor Command(Download firmware image) send by multiple step between application and driver to fixed the windows 8 OS
      can not send data over 128K issue.
 - 2. Support application to get PCI bus & slot information.
 - 3. Create new IO control code with SMI signature to fix the issue that system read/write device will hang-up after device initialized.
      =>   After application initialized device and reset device to change firmware from ROM code mode to ISP mode, 
         all the IO queues were to be destroyed by the mode changed of firmware.
	         To fix this issue driver support the new IO-control code function for application to notify the driver to recovery the 
	       device after device initialized and to notify the OS re-scan the device.

SM2260 Driver V1.3.2.1
 - 1. Add debug message for driver debug.
 
SM2260 Driver V1.3.2.2
 - 1. Create new IO control code that can report version number.
 - 2. move version number define from both nvme86.rc and nvme64.rc to precomp.h

SM2260 Driver V1.4.0.1
 - 1. Synchronize code to version 1.4.0.0 which release by NVM Express organization to fix the bug issue that resume from S3/S4 fail.

SM2260 Driver V1.4.0.2
 - 1. Add PCI vendor ID and Product ID check to support SM2260 only.

SM2260 Driver V1.4.0.3
 - 1. Fixed some wrong information in inf file. 

SM2260 Driver V1.4.0.4
 - 1. Fixed bug: To request the global log page, the namespace specified is FFFFFFFFh.
 
SM2260 Driver V1.4.0.5
 - 1. Fixed bug: Didn't check the supported queue entries reported in capability register,
                 that will cause the queue create fail when the register setting was changed by firmware.
                 
SM2260 Driver V1.4.0.6
 - 1. Modify: Support VID=0x8086, DID=0xF1A5 for intel PRD project
 - 2. Add debug message in MSI ISR
 - 3. Modify: Changed the VID/DID checking rule by support list.

SM2260 Driver V1.4.1.0
 - 1. add power state change feature.
 - 2. modify timer routine for power state change feature.
 - 3. patch the phase tag bit set error by A0/A1 chip.
 - 4. add the key word "SMINVME: " in debug message.
 - 5. fix bug: admin security command will fail with data length is zero.
 
SM2260 Driver V1.4.1.1
 - 1. add power state 4 feature supported.
 
SM2260 Driver V1.4.1.2
 - 1. change SCSI sense key from 0x05/0x20/0x09 to 0x07/0x03/0x00 for NVME error code SCT=0x03/SC=0x86.

SM2260 Driver V1.4.1.3
 - 1. Change SCSI sense key from 0x07/0x30/0x00 to 0x07/0x20/0x02 for NVME error code SCT=0x03/SC=0x86.
 - 2. Initiate all CPL queue CID as UNKNOWN_CMD_ID.
 - 3. To request GetLogPage, all namespace specified will be FFFFFFFFh.

SM2260 Driver V1.4.1.4
 - 1. Fix bug: issue identify controller command twice while re-initial from hibernation mode.
 
SM2260 Driver V1.4.1.5
 - 1. Support admin command 0x14(Device Self-test).
 - 2. change behavior :GetLogPag admin command do not specify namespace value by driver.    
 
SM2260 Driver V1.4.1.6
 - 1. Fix bug: S3/S4 fail with debug message output enabled.
                 => disable command/interrupt debug message output in crash dump mode.
 - 2. modify to send Power state changed command sequentially.

SM2260 Driver V1.4.1.7
 - 1. Fix bug: Set feature admin command with FID:0x0C does not prepare PRP.

SM2260 Driver V1.4.1.8
 - 1. Fix bug: power state changed sequence error at driver unload.

SM2260 Driver V1.4.1.9
 - 1. Removed power state changed debug message at define NVME_CMD_DBG set to 0.

SM2260 Driver V1.4.1.10
 - 1. Add Micron's VID(0x1344) into support list.

SM2260 Driver V1.4.1.11
 - 1. Add Micron's DID(0x5402) into support list.

SM2260 Driver V1.4.1.12
 - 1. fixe bug:Wrong PCI VID for Micron's DID(0x5402).

SM2260 Driver V1.4.1.13
 - 1. fixe bug: power lost before set power state back to PS0 command complete at driver unload will cause system hangs.

SM2260 Driver V1.4.1.14
 - 1. Add Crucial's VID/DID(0xC0A9/0x5402) into support list.

SM2260 Driver V1.4.1.15
 - 1. Change setting: Change IO queue priority from urgent to medium.

SM2260 Driver V1.4.2.0
 - 1. Do not issue power state change back to state 0 when driver removed on Intel (VID:0x8086) device.
 - 2. Modify SntiTranslateSglToPrp function code for fix blue screen condition(IRQL_NOT_LESS_OR_EQUAL).  

SM2260 Driver V1.4.3.0
 - 1. fix bug:System crash when removing driver or shutting down . System can't resume from S3 ,S4. 

SM2260 Driver V1.4.4.0
 - 1. fix bug:System crash when removing driver or shutting down sometimes.

SM2260 Driver V1.4.5.0
 - 1. fix bug: HMB feature do not issue set feature admin command for disable HMB when disable drive.
 - 2. fix bug: Disable Nvme device cause device management no response.Because OS system mask INT, let driver receive
      no interrupt message.

SM2260 Driver V1.4.6.0
 - 1. fix bug: set feature(Number of Queues:0x07) command will set wrong NCQR/NSQR(0xFFFF) at INTERRUPT_INTX mode.
 - 2. set VENDOR_MULTI_STEP define to 0(disable) because firmware support send vendor command by multiple step already.

SM2260 Driver V1.4.7.0
 - 1. Modify return sense key for fit the status code of Generic Command Status(SPEC 1.2). 

SM2260 Driver V1.4.8.0
 - 1. fix bug: System can't remove driver correctly while power state changing and device power off suddenly. 
               If reach this condition that will cause system blue screen or yellow bang(driver set up failure).

SM2260 Driver V1.4.9.0
 - 1. fix bug: System copy file failure( system hanging ) while power state changing from PS0 to PS3 and power lost suddenly.

SM2260 Driver V1.4.10.0
 - 1. fix bug: All fatal error branch shouldn't release memory pool besides driver unload.  
 - 2. fix bug: Sometimes the driver read the BAR0 as 0xFFFFFFFF 0xFFFFFFFF while driver reload.Delay times for OS refill BAR0 correctly.
 - 3. fix bug: Driver does not issue shutdown notification while system get into S4(hibernation) or S5(normal shutdown).

SM2260 Driver V1.4.11.0
 - 1. fix bug: The system hang and no action while system get into S4(hibernation).(NVMe device configure as System Disk)
 - 2. fix bug: The system cause BSOD 0xD1 while system is truning off(normal shutdown).
 - 3. Non-block host command while the power state is changing.

SM2260 Driver V1.4.12.0
 - 1. fix bug: System enter S3 without issuing shutdwon notificatin.
 - 2. New add SMI IOCtrl command : Stop driver.
 - 3. New add SMI IOCtrl command : Recovery.

SM2260 Driver V1.4.13.0 
 - 1. fix bug: SPOR Handle for SMI IOCtrl command -Recovery-.

SM2260 Driver V1.4.14.0
 - 1. New add SMI IOCtrl command : Power management enable.
 - 2. New add SMI IOCtrl command : Power management disable.
 - 3. fix bug: Error handle for IOCtrl command. Reject all IOCtrl command unless -Recovery- command when driver reported "No device" status. 

SM2260 Driver V1.4.15.0 
 - 1.Fix Micron Device STOP/UNISTALL Driver,Device can't work in next time START/INSTALL Driver (Shutdown notification issue)    

SM2260 Driver V1.4.16.0
 - 1.Add Command Time out Detect for MP Recovery initial flow.
 - 2.Add Debug Message for PFA. 
 
SM2260 Driver V1.4.17.0
 - 1.Change Flow:Clear CC.EN after Shutdown notification

SM2260 Driver V1.4.18.0 
 - 1. Add Debug Message for PFA.
 - 2. Modify flow: if driver stopped by VU command , controller can't be recovery by HwResetBus. 
 - 3. Check device present or not while unload driver.

SM2260 Driver V1.4.19.0
 - 1. Separate driver from the OS environment.
 - 2. Supported solution for Win7 and Win10. 

SM2260 Driver V1.4.20.0
 - 1. Enable HMB feature.
 - 2. Modify HMB buffer creating flow
 - 3. Add registry value "HMBEnable" that use could enable/disable HMB feature without update driver.
 - 4. Add SMI's DID(0x2262), DID(0x2263) into support list.
 - 5. Modify file and device description.

SM2260 Driver V1.4.21.0
 - 1. New add SMI ioctrl command for "GetBootPartitionSize" and "GetBootPartitionImage"
 - 2. Add timeout monitor for IOctl command.
 - 3. Add Shannon's DID(0x9211), DID(0x9212), DID(0x9215) into support list. 

SM226x Driver V1.4.22.0
 - 1. New add SMI IOCtrl command: Get Vendor Identify

SM226x Driver V1.4.23.0
 - 1. Disable vendor command timeout mechanism.

SM226x Driver V1.4.24.0
 - 1. Enable vendor command timeout mechanism.
 - 2. Add registry value "VSTimeoutEnable" which can switch on/off vendor command timeout mechanism without changing driver.

SM226x Driver V1.4.25.0
 - 1. Support Win8.1.
 - 2. Add Intel's DID(0xF1A6) into support list.

SM226x Driver V1.4.26.0
 - 1. Fix bug: Timeout mechanism did not handle NVMe_Pass_Through IO command. 

SM226x Driver V1.4.27.0
 - 1. Support set/get feature command timestamp.
 - 2. Fix bug: Recovery fail while the controller is no response.

SM226x Driver V1.4.28.0
 - 1. Add Ramaxel's VID(0x1CC4)DID(0x2260) into support list.

SM226x Driver V1.4.29.0
 - 1. Add SMI device io control command - Shutdown notification
 - 2. Fix bug: As data drive, OS system can't shutdown,s3 s4 because driver issue disable HMB set feature command after shutdown notification issued.
 - 3. Support get log page command NUMDU(DW11).
 - 4. Fix bug: Recovery routine fatal error cause system hanging.
 - 5. Support Admin command - sanitize.   

SM226x Driver V1.4.30.0
 - 1. Fix bug: Calculated wrong data length when issued Dataset Management Command(NvmeMini - IOCTL).
 - 2. Add Intel's DID(0xF1A8) into support list.

SM226x Driver V1.4.31.0
 - 1. Fix bug: System runs into BSOD after admin cmd Sanitize is issued while formatNVM cmd is in progress.

SM226x Driver V1.4.32.0
 - 1. modify boot partition with non-fixed segment size
 - 2. Add host memory buffer get feature Command
 - 3. Add disable auto detect device function.

 SM226x Driver V99.4.32.1
 - 1. New add SMI IOCtrl command : Set Max Payload Size
 - 2. New add SMI IOCtrl command : Get Max Payload Size

 SM226x Driver V10.4.32.2
  -1. Add ATP_SM2260 id to Product Support List.

 SM226x Driver V10.4.32.3
  -1. Add Boot Partition Enable option in inf file.
  -2. Add SMI_2270 IN Product Support List.
  -3. Change nvme_MP.inf IoQEntries numbers to default 0x20(32)
  -4. Add 2270 device class to nvme_MP.inf.

