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