*******************************************

LSI Corp. MegaRAID Windows Drivers

*******************************************


Release Date: 02/28/12
======================

Supported Controllers
==================

MegaRAID SAS 9265-8i
MegaRAID SAS 9285-8e
MegaRAID SAS 9240-4i
MegaRAID SAS 9240-8i
MegaRAID SAS 9260-4i
MegaRAID SAS 9260CV-4i
MegaRAID SAS 9260-8i
MegaRAID SAS 9260CV-8i
MegaRAID SAS 9260DE-8i
MegaRAID SAS 9261-8i
MegaRAID SAS 9280-4i4e
MegaRAID SAS 9280-8e
MegaRAID SAS 9280DE-8e
MegaRAID SAS 9280-24i4e
MegaRAID SAS 9280-16i4e
MegaRAID SAS 9260-16i
MegaRAID SAS 9266-4i
MegaRAID SAS 9266-8i
MegaRAID SAS 9285CV-8e
MegaRAID SAS 8704ELP
MegaRAID SAS 8704EM2
MegaRAID SAS 8708ELP
MegaRAID SAS 8708EM2 
MegaRAID SAS 8880EM2
MegaRAID SAS 8888ELP
MegaRAID SAS 8308ELP*
MegaRAID SAS 8344ELP*
MegaRAID SAS 84016E*
MegaRAID SAS 8408E*
MegaRAID SAS 8480E*
MegaRAID SATA 300-8ELP*

*These older controllers should work but have not been tested.


Component:
==========
SAS MegaRAID Drivers for Windows
Release Date: 02/28/12


Version Numbers:	
================			
Current Version		5.2.112
Previous Version	5.1.112

Contents:
=========
This package contains signed drivers for the following Windows versions:
Windows 2003 x86 
Windows 2003 x64
Windows Vista x86 
Windows Vista x64  
Windows 2008 x86 
Windows 2008 x64
Windows 2008R2 X64
Windows 7 x86
Windows 7 x64

Install the driver from the appropriate folder for your Windows version.


Bug Fixes/Enhancements:  
=======================
Changes from version 5.2.108 to 5.2.112.
1) Reboot fix.		NULL pointer now checked before attempting coalescing.
2) Device queues.	Removed setting device queues for physical devices - path 0.
3) Additional IOCTLs.	Added getting and setting driver parameters from userland.
4) MSIqueue fix.	Was treating Registry MSIqueue depth as boolean verses unsigned char.

Changes from version 5.2.100 to 5.2.108:
1) Coalescing fix (LSIP200187882).
2) Initialization timeout increase from 5 to 60 seconds.
3) OCR bug fix  from looking at entire 32 bits, to just the firmware status bits (4).
4) shutdown/hibernate fix.
5) Registry settings  tried to simplify a bit from enabling a disable bit which enables a feature.
6) SRB validation to verify correct data transfer size in accordance with the CDB.
7) Fix nodev.inf
8) Add new pnp ids

Changes from version 5.2.98 to 5.2.101:
1) Revert to legacy coalescing logic to address issues found during TB-iMR testing.
2) Add device ids

Changes from version 5.2.98 to 5.2.100:
1) Removed clearing entire SRB extension (added in 5.2.82).
2) Added "NoCoalPerLD" registry switch to use IO count across LDs for coalescing starting trigger, 
   and to flush all chains depending on the number of completions and the total number of outstanding
   IOs across all LDs. This was the original algorithm used in MR drivers.
3) Added "NoBusyWait" registry switch to not call StorPortBusyWait() when submit queue is full
   (iMR products only), and instead just return IO BUSY with QUEUE_FULL.
4) Update metrics on all RW IOs, not just coalesced ones.

Changes from version 5.2.96 to 5.2.98:
1) Flushing the clear state change interrupt for Fusion controllers (TB/Invader).
2) Work around for firmware defect #187580: always use IEEE SGL for Fusion controllers.
2) Invader only: add MR_RL_FLAGS_SEQ_NUM_ENABLE flag to region lock for LD IO as well as FP IO.

Changes from version 5.2.94 to 5.2.96:
1) Wrap MSI message used if not enough queues supported, instead of defaulting to 0.
2) Fixed nodev.inf, which did not install virtual device because of format issue in file.
3) PnP ID updates 
4) Add enclosure devices for LSIP200187219

Changes from version 5.2.92 to 5.2.94:
1) Fixed OCR to synchronize with MSI interrupts.

Changes from version 5.2.90 to 5.2.92:
1) Defect 186626: Fixed Invader chain bug introduced with version 88.

Changes from version 5.2.88 to 5.2.90:
1) Do not use DPC until initialized.
2) Fixed OCR which became broken with version 82.
3) Removed unnecessary repeated calls to StorPortInitialize() in DriverEntry().

Changes from version 5.2.82 to 5.2.88:
1) Added more devices in INF file
2) Fixed issue with 1068 controller: cannot use 64-bit registers.
3) Check for SMID=0 to avoid accessing inappropriate memory addresses.
4) Clear SGE flags for Invader in actual packet in allocated memory, not just Srb extension.
5) Fixed bug that completed IOCTL request that was saved for deferred execution because of queue full (only hit on Falcon).
6) Added registry switch to max set number of IOs on Raid1 arm before switching to other arm, name is "BalanceCount", default is 16.

Changes from version 5.2.82 to 5.2.84:
1) New INF files.

Changes from version 5.2.78 to 5.2.82:
1) Added support for Invader controller.
2) Added support for 64-bit addresses for I2O controllers (pre-TB), which will allow for SRBs in upper memory (new in Win8).
3) Reworked OCR code to cancel all outstanding IOs when killing adapter
4) Reworked the INF files to allow internationizing the install disk string, and cleaning it up some as well.

Changes from version 5.2.76 to 5.2.78:
1) Reworked metrics code again to support original CLI data retrieval algorithm.
2) Removed used of SCSISTAT_QUEUE_FULL when busying IOCTLs or commands during reset/restart.
3) Allow returning overrun status on non-RW IOs for snapshot drivers.
4) Removed auto-sense support when in hibernate/memdump mode.
5) Added nodev.inf file for enclosure string support.

Changes from version 5.2.74 to 5.2.76:
1) Added devices to INF, using Strings section for localization.
2) Fix metrics code to just return the size when the buffer is not large enough for the data.
3) Complete IOs as BUSY that are returned with MFI_STAT_CONFIG_SEQ_MISMATCH from firmware to have them retried by Windows.
4) Converted calls to StorPortCompleteRequest(...BUS_RESET) to StorPortNotification(RequestComplete,...) to reset all SRBs and sync with port driver.

Changes from version 5.2.70 to 5.2.74:
1) Fixed bug in CDB conversion that created "RAW" volumes.
2) Fixed bug with VendorId=0x1028 DeviceId=0x0015 that made it unsupported previously.
3) Added new devices to INF file, and fixed issue with non-MSI controllers not being supported for x86 Windows versions.
4) Cleaned up code that handles Raid1 load balancing, now using FP LBA instead of logical LBA for calculations.

Changes from version 5.2.66 to 5.2.70:
1) Fixed bug in CDB conversion that fails on LDs that are >2TB.
2) Changed the default to use NUMA (now must use "NoNuma=1" to disable).
3) Simplified adapter.h defines, and now returning generic OS name/version strings for IOCTLs.
4) Converted calls to StorPortCompleteRequest(...BUS_RESET) to StorPortNotification(RequestComplete,...) to reset all SRBs and sync with port driver.
5) Now using call to RtlIsNtDdiVersionAvailable() to test for Server 2003 instead of calling the depricated function IoIsWdmVersionAvailable().
6) Modified the sources file to what Microsoft wants in-box (except for need to change name and remove INCLUDEs for header file subdirectories).
7) Removed last ASSERTs from WMI code.

Changes from version 112 to 2.66:
This is almost completely reworked driver code, necessary to deliver the following new features:

1) Asynchronous completions
   * Interrupt handling asynchronous to submissions, using single DPC only when necessary
   * Removed tracking array and DriverStatistics
   * Using LockedInc/Dec to track IO counts, etc

2) New Coalescing
   * Now done on a per-LD basis
   * simpler/faster SGL building

3) Code Consolidation
   * MSI/non-MSI code into a single build with runtime detection of Windows 2003
   * INFs into a single file that handles both x86 and x64 installations

4) Streamline IO path
   * Saving physical addresses for boot allocated non-cached memory poniters to avoid unnecessary calls to get physical addresses
   * Using pre-allocated SRB sense buffers on to handle 64-bit addressing on TB and avoid unnecessary calls to get physical addresses
   * Removed driver code that completed a SCSI_REQUEST_SENSE (now sending to down to firmware)
   * Reworked internal DCMDs allocation, now ebedding them into SrbExtension structures

5) Misc improvements
   * Support SRB_FUNCTION_FLUSH by translating to DCMD flush commands, with registry ("NoSrbFlush") swtich to disable
   * Added timer to adapter restart to avoid polling for firmware to be ready (causes exceptions if debugger is attached)
   * Changed calculation of BusyCount used when pausing input requests to use maximum of 25% of (maxrequests-4), with starting value of 10.
   * Removed unnecessary aborting of the AEN and MAP commands upon shutdown, but transition to ready for crash dump


Known Restrictions: 
===================

1.	NONE

Known Bugs: 
===========

1.	NONE


Installation Instructions:
==========================
Please refer to the MegaRAID SAS Device Driver Installation Guide. 


===========================
Previous Releases
===========================

Component:
==========
SAS MegaRAID Drivers for Windows
Release Date: 11/15/11


Version Numbers:	
================			
Current Version		5.1.112
Previous Version	5.1.78

Contents:
=========
This package contains signed drivers for the following Windows versions:
Windows 2003 x86 
Windows 2003 x64
Windows Vista x86 
Windows Vista x64  
Windows 2008 x86 
Windows 2008 x64
Windows 2008R2 X64
Windows 7 x86
Windows 7 x64
Windows XP x64 

Install the driver from the appropriate folder for your Windows version.


Bug Fixes/Enhancements:  
=======================
Changes from version 102 to 110:

1) Defect LSIP200148189: 10/12-byte CDBs must be translated into 16-byte CDBs if the LBA exceeds 32 bits (multiple LDs on large physical arrays).
2) Defect LSIP200148733: Now setting IoFlags to the changed CDB length when converting CDBs either from 10/12=>16 or 16=>12.
3) Removed "noCDBconvert" registry switch that allowed disabled converting 16-byte CDBs to 10/12-byte CDBs.
4) Now setting ScsiStatus to SCSISTAT_QUEUE_FULL to address low performance on iMR with high queue depth.
5) Changed algorithm of setting the maximum busy-wait-count when exceed maximum number of IOs: default=10, registry setting = 1..Max/4.
6) Added check for invalid PD value in loading balancing setup code in fastpath map calculations code.
7) Defect LSIP200166574: BSOD: DRIVER_IRQL_NOT_LESS_OR_EQUAL on hibernation test in loop
8) Defect LSIP200148733) Potential data integrity issue with special I/O tool and reboots
9) Add PnP support per PR/IR (LSIP200172682, LSIP200169853, LSIP200148735)

Changes from version 100 to 102:

1) Fixed maxLD calculation, used in metrics.
2) Do not copy back uninitialized values the first time start metrics capture.
3) Moved metrics data capture to StartIO instead of BuildIO: must be synchronized.

Changes from version 90 to 100:

1) Defect 167740: avoid writing hotPlug bit more than once per firmware state, and clear when state is changed.
2) Allow registry setting for the BusyWaitCount, now defaulting to 10, and capped at 25% of the max request queue size.
3) Now initializing the collectTime used in collecting IO metrics, fixing bug when retrieving first sample.
4) Removed retrieval of LD_GET_LIST and PD_GET_LIST (still use PD_LIST_QUERY if supported).
5) Handle case of TB firmware not supporting MR_PD_QUERY_TYPE_EXPOSED_TO_HOST flag and process in completion routine.
6) Removed handling of some IOCTL completions and other requests for OS rescan to avoid excessive rescans.
7) Removed DriverStatistics code (IOCTL MR_DRIVER_IOCTL_MEGARAID_STATISTICS).
8) Check if firmware actually in fault state before test for resetRequired bit for 1068 controllers.
9) Don't write back the entire interrupt status value when either the response or change bits are set: only the change bit.
10) Remove incorrect handling of READ6 requests, which never happen in supported versions of Windows.
11) Removed all XP specific code, cleaned up some debug output code.

Changes from version 84 to 90:

1) Defect 143106: OCR does not reset controller on Falcon: using I20 registers instead of fusion ones.
2) Defect 153289: added pause after reading status register prior to reset avoids hardware check BSOD.
3) Avoid processing responses while in reset mode: check for flag after grab spin lock.
4) No longer assuming IEEE SGEs for Falcon/Tbolt controllers, use firmware setting instead.
5) Do not use more than 1 MSI queue when in hibernate/crashdump mode.
6) Changed the timeouts to 10 minutes for startup and 5 minutes for OCR.

Changes from version 78 to 84:

1) Defects 138881/145402: Must call StorPortBusy to wait for IO completions when request queue gets full, else get failed IOs.
2) Defects 139696/145324/136920/45055/45701: Overrun request queue with some sequential IO on multiple LDs, only for iMR.
3) Increase to 12 minutes the wait for firmware to become ready upon bootup or restart. 


Known Restrictions: 
===================

1.	NONE

Known Bugs: 
===========

1.	NONE


Installation Instructions:
==========================
Please refer to the MegaRAID SAS Device Driver Installation Guide. 