Release Date    : Thu. Jun 19, 2014 17:00:00 PST 2014 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
			Kashyap Desai
			Sumit Saxena
			Uday Lingala
Current Version : 06.803.02.00-rc1
Old Version     : 06.803.01.00-rc1
    1. Fix reset_mutex leak in megasas_reset_fusion().
    2. Remove unused variables in megasas_instance.
    3. Fix LD/VF affiliation parsing.
    4. Add missing initial call to megasas_get_ld_vf_affiliation().
    5. Version and Changelog update.
-------------------------------------------------------------------------------
Release Date    : Mon. Mar 10, 2014 17:00:00 PST 2014 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
			Kashyap Desai
			Sumit Saxena
Current Version : 06.803.01.00-rc1
Old Version     : 06.700.06.00-rc1
    1. Load correct raid context timeout value for multipathing & clustering.
    2. Fix megasas_ioc_init_fusion to use local stack variable.
    3. Return leaked MPT frames to MPT command pool.
    4. Add Dell PowerEdge VRTX SR-IOV VF device support.
    5. Version and Changelog update.
-------------------------------------------------------------------------------
Release Date    : Sat. Aug 31, 2013 17:00:00 PST 2013 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
			Kashyap Desai
			Sumit Saxena
Current Version : 06.700.06.00-rc1
Old Version     : 06.600.18.00-rc1
    1. Add High Availability clustering support using shared Logical Disks.
    2. Version and Changelog update.
-------------------------------------------------------------------------------
Release Date    : Wed. May 15, 2013 17:00:00 PST 2013 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
			Kashyap Desai
			Sumit Saxena
Current Version : 06.600.18.00-rc1
Old Version     : 06.506.00.00-rc1
    1. Return DID_ERROR for scsi io, when controller is in critical h/w error.
    2. Fix the interrupt mask for Gen2 controller.
    3. Update balance count in driver to be in sync of firmware.
    4. Free event detail memory without device ID check.
    5. Set IO request timeout value provided by OS timeout for Tape devices.
    6. Add support for MegaRAID Fury (device ID-0x005f) 12Gb/s controllers.
    7. Add support to display Customer branding details in syslog.
    8. Set IoFlags to enable Fast Path for JBODs for Invader/Fury(12 Gb/s)
    controllers.
    9. Add support for Extended MSI-x vectors for Invader and Fury(12Gb/s
    HBA).
    10.Add support for Uneven Span PRL11.
    11.Add support to differentiate between iMR and MR Firmware.
    12.Version and Changelog update.
-------------------------------------------------------------------------------
Release Date    : Sat. Feb 9, 2013 17:00:00 PST 2013 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 06.506.00.00-rc1
Old Version     : 06.504.01.00-rc1
    1. Add 4k FastPath DIF support.
    2. Don't load DevHandle unless FastPath enabled.
    3. Version and Changelog update.
-------------------------------------------------------------------------------
Release Date    : Mon. Oct 1, 2012 17:00:00 PST 2012 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 06.504.01.00-rc1
Old Version     : 00.00.06.18-rc1
    1. Removed un-needed completion_lock spinlock calls.
    2. Add module param for configurable MSI-X vector count.
    3. Load io_request DataLength in bytes.
    4. Add array boundary check for SystemPD.
    5. Add SystemPD FastPath support.
    6. Remove duplicate code.
    7. Version, Changelog, Copyright update.
-------------------------------------------------------------------------------
Release Date    : Tue. Jun 17, 2012 17:00:00 PST 2012 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford/Kashyap Desai
Current Version : 00.00.06.18-rc1
Old Version     : 00.00.06.15-rc1
    1. Fix Copyright dates.
    2. Add throttlequeuedepth module parameter.
    3. Add resetwaittime module parameter.
    4. Move poll_aen_lock initializer.
-------------------------------------------------------------------------------
Release Date    : Mon. Mar 19, 2012 17:00:00 PST 2012 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 00.00.06.15-rc1
Old Version     : 00.00.06.14-rc1
    1. Optimize HostMSIxVectors setting.
    2. Add fpRead/WriteCapable, fpRead/WriteAcrossStripe checks.
-------------------------------------------------------------------------------
Release Date    : Fri. Jan 6, 2012 17:00:00 PST 2010 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 00.00.06.14-rc1
Old Version     : 00.00.06.12-rc1
    1. Fix reglockFlags for degraded raid5/6 for MR 9360/9380.
    2. Mask off flags in ioctl path to prevent memory scribble with older
       MegaCLI versions.
    3. Remove poll_mode_io module parameter, sysfs node, and associated code.
-------------------------------------------------------------------------------
Release Date    : Wed. Oct 5, 2011 17:00:00 PST 2010 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 00.00.06.12-rc1
Old Version     : 00.00.05.40-rc1
    1. Continue booting immediately if FW in FAULT at driver load time.
    2. Increase default cmds per lun to 256.
    3. Fix mismatch in megasas_reset_fusion() mutex lock-unlock.
    4. Remove some un-necessary code.
    5. Clear state change interrupts for Fusion/Invader.
    6. Clear FUSION_IN_RESET before enabling interrupts.
    7. Add support for MegaRAID 9360/9380 12GB/s controllers.
    8. Add multiple MSI-X vector/multiple reply queue support.
    9. Add driver workaround for PERC5/1068 kdump kernel panic.
-------------------------------------------------------------------------------
Release Date    : Tue. Jul 26, 2011 17:00:00 PST 2010 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 00.00.05.40-rc1
Old Version     : 00.00.05.38-rc1
    1. Fix FastPath I/O to work with degraded RAID 1.
    2. Add .change_queue_depth support.
-------------------------------------------------------------------------------
Release Date    : Wed. May 11, 2011 17:00:00 PST 2010 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 00.00.05.38-rc1
Old Version     : 00.00.05.34-rc1
    1. Remove MSI-X black list, use MFI_REG_STATE.ready.msiEnable.
    2. Remove un-used function megasas_return_cmd_for_smid().
    3. Check MFI_REG_STATE.fault.resetAdapter in megasas_reset_fusion().
    4. Disable interrupts/free_irq() in megasas_shutdown().
    5. Fix bug where AENs could be lost in probe() and resume().
    6. Convert 6,10,12 byte CDB's to 16 byte CDB for large LBA's for FastPath
       IO.
    7. Add 1078 OCR support.
-------------------------------------------------------------------------------
Release Date    : Thu. Feb 24, 2011 17:00:00 PST 2010 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 00.00.05.34-rc1
Old Version     : 00.00.05.29-rc1
    1. Fix some failure gotos from megasas_probe_one(), etc.
    2. Add missing check_and_restore_queue_depth() call in
       complete_cmd_fusion().
    3. Enable MSI-X before calling megasas_init_fw().
    4. Call tasklet_schedule() even if outbound_intr_status == 0 for MFI based
       boards in MSI-X mode.
    5. Fix megasas_probe_one() to clear PCI_MSIX_FLAGS_ENABLE in msi control
       register in kdump kernel.
    6. Fix megasas_get_cmd() to only print "Command pool empty" if
       megasas_dbg_lvl is set.
    7. Fix megasas_build_dcdb_fusion() to not filter by TYPE_DISK.
    8. Fix megasas_build_dcdb_fusion() to use io_request->LUN[1] field.
    9. Add MR_EVT_CFG_CLEARED to megasas_aen_polling().
    10. Fix tasklet_init() in megasas_init_fw() to use instancet->tasklet.
    11. Fix fault state handling in megasas_transition_to_ready().
    12. Fix max_sectors setting for IEEE SGL's.
    13. Fix iMR OCR support to work correctly.
-------------------------------------------------------------------------------
Release Date    : Tues.  Dec 14, 2010 17:00:00 PST 2010 -
			(emaild-id:megaraidlinux@lsi.com)
			Adam Radford
Current Version : 00.00.05.29-rc1
Old Version     : 00.00.04.31-rc1
    1. Rename megaraid_sas.c to megaraid_sas_base.c.
    2. Update GPL headers.
    3. Add MSI-X support and 'msix_disable' module parameter.
    4. Use lowest memory bar (for SR-IOV VF support).
    5. Add struct megasas_instance_temlate changes, and change all code to use
       new instance entries:

       irqreturn_t (*service_isr )(int irq, void *devp);
       void (*tasklet)(unsigned long);
       u32 (*init_adapter)(struct megasas_instance *);
       u32 (*build_and_issue_cmd) (struct megasas_instance *,
       struct scsi_cmnd *);
       void (*issue_dcmd) (struct megasas_instance *instance,
                              struct megasas_cmd *cmd);

   6. Add code to support MegaRAID 9265/9285 controllers device id (0x5b).
-------------------------------------------------------------------------------
1 Release Date    : Thur.  May 03, 2010 09:12:45 PST 2009 -
			(emaild-id:megaraidlinux@lsi.com)
			Bo Yang

2 Current Version : 00.00.04.31-rc1
3 Older Version   : 00.00.04.17.1-rc1

1.	Add the Online Controller Reset (OCR) to the Driver.
	OCR is the new feature for megaraid_sas driver which
	will allow the fw to do the chip reset which will not
	affect the OS behavior.

	To add the OCR support, driver need to do:
		a). reset the controller chips -- Xscale and Gen2 which
		will change the function calls and add the reset function
		related to this two chips.

		b). during the reset, driver will store the pending cmds
		which not returned by FW to driver's pending queue.  Driver
		will re-issue those pending cmds again to FW after the OCR
		finished.

		c). In driver's timeout routine, driver will report to
		OS as reset. Also driver's queue routine will block the
		cmds until the OCR finished.

		d). in Driver's ISR routine, if driver get the FW state as
		state change, FW in Failure status and FW support online controller
		reset (OCR), driver will start to do the controller reset.

		e). In driver's IOCTL routine, the application cmds will wait for the
		OCR to finish, then issue the cmds to FW.

		f). Before driver kill adapter, driver will do last chance of
		OCR to see if driver can bring back the FW.

2.	Add the support update flag to the driver to tell LSI megaraid_sas
	application which driver will support the device update.  So application
	will not need to do the device update after application add/del the device
	from the system.
3.	In driver's timeout routine, driver will do three time reset if fw is in
	failed state.  Driver will kill adapter if can't bring back FW after the
	this three times reset.
4.	Add the input parameter max_sectors to 1MB support to our GEN2 controller.
	customer can use the input parameter max_sectors to add 1MB support to GEN2
	controller.

1 Release Date    : Thur.  Oct 29, 2009 09:12:45 PST 2009 -
			(emaild-id:megaraidlinux@lsi.com)
			Bo Yang

2 Current Version : 00.00.04.17.1-rc1
3 Older Version   : 00.00.04.12

1.	Add the pad_0 in mfi frame structure to 0 to fix the
	context value larger than 32bit value issue.

2.	Add the logic drive list to the driver.  Driver will
	keep the logic drive list internal after driver load.

3.	driver fixed the device update issue after get the AEN
	PD delete/ADD, LD add/delete from FW.

1 Release Date    : Tues.  July 28, 2009 10:12:45 PST 2009 -
			(emaild-id:megaraidlinux@lsi.com)
			Bo Yang

2 Current Version : 00.00.04.12
3 Older Version   : 00.00.04.10

1.	Change the AEN sys PD update from scsi_scan to
	scsi_add_device and scsi_remove_device.
2.	Takeoff the debug print-out in aen_polling routine.

1 Release Date    : Thur.  July 02, 2009 10:12:45 PST 2009 -
			(emaild-id:megaraidlinux@lsi.com)
			Bo Yang

2 Current Version : 00.00.04.10
3 Older Version   : 00.00.04.08

1.	Add the 3 mins timeout during the controller initialize.
2.	Add the fix for 64bit sense date errors.

1 Release Date    : Tues. May 05, 2009 10:12:45 PST 2009 -
			(emaild-id:megaraidlinux@lsi.com)
			Bo Yang

2 Current Version : 00.00.04.08
3 Older Version   : 00.00.04.06

1.	Add the fix of pending in FW after deleted the logic drives.
2.	Add the fix of deallocating memory after get pdlist.

1 Release Date    : Tues. March 26, 2009 10:12:45 PST 2009 -
			(emaild-id:megaraidlinux@lsi.com)
			Bo Yang

2 Current Version : 00.00.04.06
3 Older Version   : 00.00.04.04

1.	Add the fix of the driver cmd empty fix of the driver cmd empty.
2.	Add the fix of the driver MSM AEN CMD cause the system slow.

1 Release Date    : Tues. March 03, 2009 10:12:45 PST 2009 -
			(emaild-id:megaraidlinux@lsi.com)
			Bo Yang

2 Current Version : 00.00.04.04
3 Older Version   : 00.00.04.01

1.	Add the Tape drive fix to the driver: If the command is for
	the tape device, set the pthru timeout to the os layer timeout value.

2.	Add Poll_wait mechanism to Gen-2 Linux driv.
		In the aen handler, driver needs to wakeup poll handler similar to
		the way it raises SIGIO.

3.	Add new controller new SAS2 support to the driver.

4.	Report the unconfigured PD (system PD) to OS.

5.	Add the IEEE SGL support to the driver

6.	Reasign the Application cmds to SAS2 controller

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 success 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 do not 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 variable 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 transition 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 superfluous instance_lock

	gets rid of the otherwise superfluous instance_lock and avoids an unsafe
	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

	"This 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 definitions that will be initialised to appropriate 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 codepaths 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>
