|
來自LSI的更新說明:
9/14/2011
Changes from version 5.2.98 to 5.2.101:
1) Revert to legacy coalescing logic to address corruption found during TB-iMR testing.
2) Add device ID for LSIP200199151 and LSIP200196829.
8/23/2011
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.
8/12/2011
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.
8/04/2011
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 for LSIP200186694
4) Add enclosure devices for LSIP200187219
8/02/2011
Changes from version 5.2.92 to 5.2.94:
1) Fixed OCR to synchronize with MSI interrupts.
7/28/2011
Changes from version 5.2.90 to 5.2.92:
1) Defect 186626: Fixed Invader chain bug introduced with version 88.
7/26/2011
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().
7/22/2011
Changes from version 5.2.82 to 5.2.88:
1) Added more devices in INF file (renamed to oemsetup for now).
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.
7/19/2011
Changes from version 5.2.82 to 5.2.84:
1) New INF files.
7/12/2011
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 (previous using banned interface to do the same thing).
4) Reworked the INF files to allow internationizing the install disk string, and cleaning it up some as well.
6/30/2011
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.
6/27/2011
Changes from version 5.2.74 to 5.2.76:
1) Added Dell 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.
6/16/2011
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.
6/10/2011
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
>> still need to implement adaptive logic
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
Changes from version 110 to 112:
1) Fix for returned metrics data size for MR_DCMD_CTRL_IO_METRICS_GET, also checking against maximum SRB data buffer length.
2) Added checks for maximum SRB data buffer length for other IOCTLs as well.
Changes from version 102 to 110:
1) Defect 148104: 10/12-byte CDBs must be translated into 16-byte CDBs if the LBA exceeds 32 bits (multiple LDs on large physical arrays).
2) 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.
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.
Note that the increase in the wait-for-ready means that our product could take up to 30 minutes to boot (12 mins + max-of-3-OCRs * 3 mins).
Changes from version 74 to 78:
1) Defect 125540: Hibernation on Liberator fixed, must redirect legacy interrupts without checking status bits in hiber driver.
2) Must check status bits before redirect legacy interrupts if not in hiber driver (fix hang from handling shared interrupts).
3) Protect interrupts while performing hardware reset sequence.
4) Qualify enforcing power of 16 for max number of commands to TB controller.
5) Uncomment code that checks for a changed transfer size from the TB controller, which previously never updated the length. (#138839).
6) Do not fail SRB_FUNCTION_PNP/POWER requests, not expected behavior (this is change from all previous versions).
7) Ignore registry switch to disable MSI - this causes driver load failure if Windows and controller expect MSI to be enabled.
Changes from version 70 to 74:
1) Defect 126587: Send driver version string to firmware for all controllers, not just TB.
2) Defect 135926/123316: completing SRB too soon in the response handler.
3) Defect 135227/136063: OCR with pre-TB controllers are completing canceled responses.
4) Defect 136142/136542: Only perform TB specific code upon shutdown if TB controller (added in 68).
5) Added registry switch: ClearChangeInt to allow clearing state change interrupts (default=0).
6) Added registry switch: MaxNumRequests to reduce the number of allowed SRB requests for testing.
7) Now testing for NULL SRB data structure values (such as the extension pointer) to detect corruption.
8) Added SRB completion when overflow pending request limit.
|
|