1 Release Date    : Mon. March 10 11:02:31 PDT 2008 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang

2 Current Version : 00.00.03.20-RC1
3 Older Version   : 00.00.03.16

1. Rollback the sense info implementation
	Sense buffer ptr data type in the ioctl path is reverted back
	to u32 * as in previous versions of driver.

2. Fixed the driver frame count.
	When Driver sent wrong frame count to firmware.  As this
	particular command is sent to drive, FW is seeing continuous
	chip resets and so the command will timeout.

3. Add the new controller(1078DE) support to the driver
	and Increase the max_wait to 60 from 10 in the controller
	operational status.  With this max_wait increase, driver will
	make sure the FW will 	finish the pending cmd for KDUMP case.

1 Release Date    : Thur. Nov. 07 16:30:43 PST 2007 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang

2 Current Version : 00.00.03.16
3 Older Version   : 00.00.03.15

1. Increased MFI_POLL_TIMEOUT_SECS to 60 seconds from 10. FW may take
	a max of 60 seconds to respond to the INIT cmd.

1 Release Date    : Fri. Sep. 07 16:30:43 PST 2007 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang

2 Current Version : 00.00.03.15
3 Older Version   : 00.00.03.14

1. Added module parameter "poll_mode_io" to support for "polling"
	(reduced interrupt operation).  In this mode, IO completion
	interrupts are delayed. At the end of initiating IOs, the
	driver schedules for cmd completion if there are pending cmds
	to be completed.  A timer-based interrupt has also been added
	to prevent IO completion processing from being delayed
	indefinitely in the case that no new IOs are initiated.

1 Release Date    : Fri. Sep. 07 16:30:43 PST 2007 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang

2 Current Version : 00.00.03.14
3 Older Version   : 00.00.03.13

1. Setting the max_sectors_per_req based on max SGL supported by the
	FW. Prior versions calculated this value from controller info
	(max_sectors_1, max_sectors_2). For certain controllers/FW,
	this was resulting in a value greater than max SGL supported
	by the FW. Issue was first reported by users running LUKS+XFS
	with megaraid_sas.  Thanks to RB for providing the logs and
	duplication steps that helped to get to the root cause of the
	issue.  2. Increased MFI_POLL_TIMEOUT_SECS to 60 seconds from
	10. FW may take a max of 60 seconds to respond to the INIT
	cmd.

1 Release Date    : Fri. June. 15 16:30:43 PST 2007 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang

2 Current Version : 00.00.03.13
3 Older Version   : 00.00.03.12

1. Added the megasas_reset_timer routine to intercept cmd timeout and throttle io.

On Fri, 2007-03-16 at 16:44 -0600, James Bottomley wrote:
It looks like megaraid_sas at least needs this to throttle its commands
> as they begin to time out.  The code keeps the existing transport
> template use of eh_timed_out (and allows the transport to override the
> host if they both have this callback).
>
> James

1 Release Date    : Sat May. 12 16:30:43 PST 2007 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang

2 Current Version : 00.00.03.12
3 Older Version   : 00.00.03.11

1.  When MegaSAS driver receives reset call from OS, driver waits in reset
routine for max 3 minutes for all pending command completion. Now driver will
call completion routine every 5 seconds from the reset routine instead of
waiting for depending on cmd completion from isr path.

1 Release Date    : Mon Apr. 30 10:25:52 PST 2007 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang

2 Current Version : 00.00.03.11
3 Older Version   : 00.00.03.09

	1. Memory Manager for IOCTL removed for 2.6 kernels.
	   pci_alloc_consistent replaced by dma_alloc_coherent. With this
	   change there is no need of memory manager in the driver code

	On Wed, 2007-02-07 at 13:30 -0800, Andrew Morton wrote:
	> I suspect all this horror is due to stupidity in the DMA API.
	>
	> pci_alloc_consistent() just goes and assumes GFP_ATOMIC, whereas
	> the caller (megasas_mgmt_fw_ioctl) would have been perfectly happy
	> to use GFP_KERNEL.
	>
	> I bet this fixes it

	It does, but the DMA API was expanded to cope with this exact case, so
	use dma_alloc_coherent() directly in the megaraid code instead.  The dev
	is just &pci_dev->dev.

	James <James.Bottomley@SteelEye.com>

	3. SYNCHRONIZE_CACHE is not supported by FW and thus blocked by driver.
	4. Hibernation support added
	5. Performing diskdump while running IO in RHEL 4 was failing. Fixed.

1 Release Date    : Fri Feb. 09 14:36:28 PST 2007 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang

2 Current Version : 00.00.03.09
3 Older Version   : 00.00.03.08

i.	Under heavy IO mid-layer prints "DRIVER_TIMEOUT" errors

	The driver now waits for 10 seconds to elapse instead of 5 (as in
	previous release) to resume IO.

1 Release Date    : Mon Feb. 05 11:35:24 PST 2007 -
			(emaild-id:megaraidlinux@lsi.com)
			Sumant Patro
			Bo Yang
2 Current Version : 00.00.03.08
3 Older Version   : 00.00.03.07

i.	Under heavy IO mid-layer prints "DRIVER_TIMEOUT" errors

	Fix:	The driver is now throttling IO.
	Checks added in megasas_queue_command to know if FW is able to
	process commands within timeout period. If number of retries
	is 2 or greater,the driver stops sending cmd to FW temporarily. IO is
	resumed if pending cmd count reduces to 16 or 5 seconds has elapsed
	from the time cmds were last sent to FW.

ii.	FW enables WCE bit in Mode Sense cmd for drives that are configured
	as WriteBack. The OS may send "SYNCHRONIZE_CACHE" cmd when Logical
	Disks are exposed with WCE=1. User is advised to enable Write Back
	mode only when the controller has battery backup. At this time
	Synhronize cache is not supported by the FW. Driver will short-cycle
	the cmd and return sucess without sending down to FW.

1 Release Date    : Sun Jan. 14 11:21:32 PDT 2007 -
		 Sumant Patro <Sumant.Patro@lsil.com>/Bo Yang
2 Current Version : 00.00.03.07
3 Older Version   : 00.00.03.06

i.	bios_param entry added in scsi_host_template that returns disk geometry
	information.

1 Release Date    : Fri Oct 20 11:21:32 PDT 2006 - Sumant Patro <Sumant.Patro@lsil.com>/Bo Yang
2 Current Version : 00.00.03.06
3 Older Version   : 00.00.03.05

1. Added new memory management module to support the IOCTL memory allocation. For IOCTL we try to allocate from the memory pool created during driver initialization. If mem pool is empty then we allocate at run time.
2. Added check in megasas_queue_command and dpc/isr routine to see if we have already declared adapter dead
   (hw_crit_error=1). If hw_crit_error==1, now we donot accept any processing of pending cmds/accept any cmd from OS

1 Release Date    : Mon Oct 02 11:21:32 PDT 2006 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.03.05
3 Older Version   : 00.00.03.04

i.	PCI_DEVICE macro used

	Convert the pci_device_id-table of the megaraid_sas-driver to the PCI_DEVICE-macro, to safe some lines.

		- Henrik Kretzschmar <henne@nachtwindheim.de>
ii.	All compiler warnings removed
iii.	megasas_ctrl_info struct reverted to 3.02 release
iv.	Default value of megasas_dbg_lvl set to 0
v.	Removing in megasas_exit the sysfs entry created for megasas_dbg_lvl
vi.	In megasas_teardown_frame_pool(), cmd->frame was passed instead of
	cmd->sense to pci_pool_free. Fixed. Bug was pointed out by
	Eric Sesterhenn

1 Release Date    : Wed Sep 13 14:22:51 PDT 2006 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.03.04
3 Older Version   : 00.00.03.03

i.	Added Reboot notify
ii.	Reduced by 1 max cmds sent to FW from Driver to make the reply_q_sz same
	as Max Cmds FW can support

1 Release Date    : Tue Aug 22 16:33:14 PDT 2006 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.03.03
3 Older Version   : 00.00.03.02

i.	Send stop adapter to FW & Dump pending FW cmds before declaring adapter dead.
	New varible added to set dbg level.
ii.	Disable interrupt made as fn pointer as they are different for 1068 / 1078
iii.	Frame count optimization. Main frame can contain 2 SGE for 64 bit SGLs and
	3 SGE for 32 bit SGL
iv.	Tasklet added for cmd completion
v.	If FW in operational state before firing INIT, now we send RESET Flag to FW instead of just READY. This is used to do soft reset.
vi.	megasas_ctrl_prop structure updated (based on FW struct)
vii.	Added print : FW now in Ready State during initialization

1 Release Date    : Sun Aug 06 22:49:52 PDT 2006 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.03.02
3 Older Version   : 00.00.03.01

i.	Added FW tranistion state for Hotplug scenario

1 Release Date    : Sun May 14 22:49:52 PDT 2006 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.03.01
3 Older Version   : 00.00.02.04

i.	Added support for ZCR controller.

		New device id 0x413 added.

ii.	Bug fix : Disable controller interrupt before firing INIT cmd to FW.

		Interrupt is enabled after required initialization is over.
		This is done to ensure that driver is ready to handle interrupts when
		it is generated by the controller.

		-Sumant Patro <Sumant.Patro@lsil.com>

1 Release Date    : Wed Feb 03 14:31:44 PST 2006 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.02.04
3 Older Version   : 00.00.02.04 

i.	Remove superflous instance_lock

	gets rid of the otherwise superflous instance_lock and avoids an unsave 
	unsynchronized access in the error handler.

		- Christoph Hellwig <hch@lst.de>


1 Release Date    : Wed Feb 03 14:31:44 PST 2006 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.02.04
3 Older Version   : 00.00.02.04 

i.	Support for 1078 type (ppc IOP) controller, device id : 0x60 added.
	During initialization, depending on the device id, the template members 
	are initialized with function pointers specific to the ppc or 
	xscale controllers.  

		-Sumant Patro <Sumant.Patro@lsil.com>
		
1 Release Date    : Fri Feb 03 14:16:25 PST 2006 - Sumant Patro 
							<Sumant.Patro@lsil.com>
2 Current Version : 00.00.02.04
3 Older Version   : 00.00.02.02 
i.	Register 16 byte CDB capability with scsi midlayer 

	"Ths patch properly registers the 16 byte command length capability of the 
	megaraid_sas controlled hardware with the scsi midlayer. All megaraid_sas 
	hardware supports 16 byte CDB's."

		-Joshua Giles <joshua_giles@dell.com> 

1 Release Date    : Mon Jan 23 14:09:01 PST 2006 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.02.02
3 Older Version   : 00.00.02.01 

i.	New template defined to represent each family of controllers (identified by processor used). 
	The template will have defintions that will be initialised to appropritae values for a specific family of controllers. The template definition has four function pointers. During driver initialisation the function pointers will be set based on the controller family type. This change is done to support new controllers that has different processors and thus different register set.

		-Sumant Patro <Sumant.Patro@lsil.com>

1 Release Date    : Mon Dec 19 14:36:26 PST 2005 - Sumant Patro <Sumant.Patro@lsil.com>
2 Current Version : 00.00.02.00-rc4 
3 Older Version   : 00.00.02.01 

i.	Code reorganized to remove code duplication in megasas_build_cmd. 

	"There's a lot of duplicate code megasas_build_cmd.  Move that out of the different codepathes and merge the reminder of megasas_build_cmd into megasas_queue_command"

		- Christoph Hellwig <hch@lst.de>

ii.	Defined MEGASAS_IOC_FIRMWARE32 for code paths that handles 32 bit applications in 64 bit systems.

	"MEGASAS_IOC_FIRMWARE can't be redefined if CONFIG_COMPAT is set, we need to define a MEGASAS_IOC_FIRMWARE32 define so native binaries continue to work"

		- Christoph Hellwig <hch@lst.de>
