
1 Release Date    : Thur.July. 24 11:41:51 PST 2008 -
                       (emaild-id:megaraidlinux@lsi.com)
                       Sumant Patro
                       Bo Yang

2 Current Version : 00.00.04.01
3 Older Version   : 00.00.03.22

1. Add the new controller (0078, 0079) support to the driver
       Those controllers are LSI's next generatation(gen2) SAS controllers.

1 Release Date    : Mon.June. 23 10:12:45 PST 2008 -
                       (emaild-id:megaraidlinux@lsi.com)
                       Sumant Patro
                       Bo Yang

2 Current Version : 00.00.03.22
3 Older Version   : 00.00.03.20

1. Add shutdown DCMD cmd to the shutdown routine to make FW shutdown proper.
2. Unexpected interrupt occurs in HWR Linux driver, add the dumy readl pci flush will fix this issue.

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>
