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 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 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>
