Release Date	: Thu Nov 16 15:32:35 EST 2006 -
				Sumant Patro <sumant.patro@lsi.com>
Current Version : 2.20.5.1 (scsi module), 2.20.2.6 (cmm module)
Older Version	: 2.20.4.9 (scsi module), 2.20.2.6 (cmm module)

1.	Changes in Initialization to fix kdump failure.
	Send SYNC command on loading.
	This command clears the pending commands in the adapter
	and re-initialize its internal RAID structure.
	Without this change, megaraid driver either panics or fails to
	initialize the adapter during kdump's second kernel boot
	if there are pending commands or interrupts from other devices
	sharing the same IRQ.
2. 	Authors email-id domain name changed from lsil.com to lsi.com.
	Also modified the MODULE_AUTHOR to megaraidlinux@lsi.com

Release Date	: Fri May 19 09:31:45 EST 2006 - Seokmann Ju <sju@lsil.com>
Current Version : 2.20.4.9 (scsi module), 2.20.2.6 (cmm module)
Older Version	: 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)

1.	Fixed a bug in megaraid_init_mbox().
	Customer reported "garbage in file on x86_64 platform".
	Root Cause: the driver registered controllers as 64-bit DMA capable
	for those which are not support it.
	Fix: Made change in the function inserting identification mechanism
	identifying 64-bit DMA capable controllers.

	> -----Original Message-----
	> From: Vasily Averin [mailto:vvs@sw.ru]
	> Sent: Thursday, May 04, 2006 2:49 PM
	> To: linux-scsi@vger.kernel.org; Kolli, Neela; Mukker, Atul;
	> Ju, Seokmann; Bagalkote, Sreenivas;
	> James.Bottomley@SteelEye.com; devel@openvz.org
	> Subject: megaraid_mbox: garbage in file
	>
	> Hello all,
	>
	> I've investigated customers claim on the unstable work of
	> their node and found a
	> strange effect: reading from some files leads to the
	>  "attempt to access beyond end of device" messages.
	>
	> I've checked filesystem, memory on the node, motherboard BIOS
	> version, but it
	> does not help and issue still has been reproduced by simple
	> file reading.
	>
	> Reproducer is simple:
	>
	> echo 0xffffffff >/proc/sys/dev/scsi/logging_level ;
	> cat /vz/private/101/root/etc/ld.so.cache >/tmp/ttt  ;
	> echo 0 >/proc/sys/dev/scsi/logging
	>
	> It leads to the following messages in dmesg
	>
	> sd_init_command: disk=sda, block=871769260, count=26
	> sda : block=871769260
	> sda : reading 26/26 512 byte blocks.
	> scsi_add_timer: scmd: f79ed980, time: 7500, (c02b1420)
	> sd 0:1:0:0: send 0xf79ed980                  sd 0:1:0:0:
	>         command: Read (10): 28 00 33 f6 24 ac 00 00 1a 00
	> buffer = 0xf7cfb540, bufflen = 13312, done = 0xc0366b40,
	> queuecommand 0xc0344010
	> leaving scsi_dispatch_cmnd()
	> scsi_delete_timer: scmd: f79ed980, rtn: 1
	> sd 0:1:0:0: done 0xf79ed980 SUCCESS        0 sd 0:1:0:0:
	>         command: Read (10): 28 00 33 f6 24 ac 00 00 1a 00
	> scsi host busy 1 failed 0
	> sd 0:1:0:0: Notifying upper driver of completion (result 0)
	> sd_rw_intr: sda: res=0x0
	> 26 sectors total, 13312 bytes done.
	> use_sg is 4
	> attempt to access beyond end of device
	> sda6: rw=0, want=1044134458, limit=951401367
	> Buffer I/O error on device sda6, logical block 522067228
	> attempt to access beyond end of device

2.	When INQUIRY with EVPD bit set issued to the MegaRAID controller,
	system memory gets corrupted.
	Root Cause: MegaRAID F/W handle the INQUIRY with EVPD bit set
	incorrectly.
	Fix: MegaRAID F/W has fixed the problem and being process of release,
	soon. Meanwhile, driver will filter out the request.

3.	One member in the data structure of the driver leads to unaligned
	issue on 64-bit platform.
	Customer reported "kernel unaligned access address" issue when
	application communicates with MegaRAID HBA driver.
	Root Cause: in uioc_t structure, one of member had misaligned and it
	led system to display the error message.
	Fix: A patch submitted to community from following folk.

	> -----Original Message-----
	> From: linux-scsi-owner@vger.kernel.org
	> [mailto:linux-scsi-owner@vger.kernel.org] On Behalf Of Sakurai Hiroomi
	> Sent: Wednesday, July 12, 2006 4:20 AM
	> To: linux-scsi@vger.kernel.org; linux-kernel@vger.kernel.org
	> Subject: Re: Help: strange messages from kernel on IA64 platform
	>
	> Hi,
	>
	> I saw same message.
	>
	> When GAM(Global Array Manager) is started, The following
	> message output.
	> kernel: kernel unaligned access to 0xe0000001fe1080d4,
	> ip=0xa000000200053371
	>
	> The uioc structure used by ioctl is defined by packed,
	> the allignment of each member are disturbed.
	> In a 64 bit structure, the allignment of member doesn't fit 64 bit
	> boundary. this causes this messages.
	> In a 32 bit structure, we don't see the message because the allinment
	> of member fit 32 bit boundary even if packed is specified.
	>
	> patch
	> I Add 32 bit dummy member to fit 64 bit boundary. I tested.
	> We confirmed this patch fix the problem by IA64 server.
	>
	> **************************************************************
	> ****************
	> --- linux-2.6.9/drivers/scsi/megaraid/megaraid_ioctl.h.orig
	> 2006-04-03 17:13:03.000000000 +0900
	> +++ linux-2.6.9/drivers/scsi/megaraid/megaraid_ioctl.h
	> 2006-04-03 17:14:09.000000000 +0900
	> @@ -132,6 +132,10 @@
	>  /* Driver Data: */
	>          void __user *           user_data;
	>          uint32_t                user_data_len;
	> +
	> +        /* 64bit alignment */
	> +        uint32_t                pad_0xBC;
	> +
	>          mraid_passthru_t        __user *user_pthru;
	>
	>          mraid_passthru_t        *pthru32;
	> **************************************************************
	> ****************

Release Date	: Mon Apr 11 12:27:22 EST 2006 - Seokmann Ju <sju@lsil.com>
Current Version : 2.20.4.8 (scsi module), 2.20.2.6 (cmm module)
Older Version	: 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)

1.	Fixed a bug in megaraid_reset_handler().
	Customer reported "Unable to handle kernel NULL pointer dereference
	at virtual address 00000000" when system goes to reset condition
	for some reason. It happened randomly.
	Root Cause: in the megaraid_reset_handler(), there is possibility not
	returning pending packets in the pend_list if there are multiple
	pending packets.
	Fix: Made the change in the driver so that it will return all packets
	in the pend_list.

2.	Added change request.
	As found in the following URL, rmb() only didn't help the
	problem. I had to increase the loop counter to 0xFFFFFF. (6 F's)
	http://marc.theaimsgroup.com/?l=linux-scsi&m=110971060502497&w=2

	I attached a patch for your reference, too.
	Could you check and get this fix in your driver?

	Best Regards,
	Jun'ichi Nomura

Release Date	: Fri Nov 11 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
Current Version : 2.20.4.7 (scsi module), 2.20.2.6 (cmm module)
Older Version	: 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)

1.	Sorted out PCI IDs to remove megaraid support overlaps.
	Based on the patch from Daniel, sorted out PCI IDs along with
	character node name change from 'megadev' to 'megadev_legacy' to avoid
	conflict.
	---
	Hopefully we'll be getting the build restriction zapped much sooner, 
	but we should also be thinking about totally removing the hardware 
	support overlap in the megaraid drivers.

	This patch pencils in a date of Feb 06 for this, and performs some 
	printk abuse in hope that existing legacy users might pick up on what's
	going on.

	Signed-off-by: Daniel Drake <dsd@gentoo.org>
	---

2.	Fixed a issue: megaraid always fails to reset handler.
	---
	I found that the megaraid driver always fails to reset the
	adapter with the following message:
		megaraid: resetting the host...
		megaraid mbox: reset sequence completed successfully
		megaraid: fast sync command timed out
		megaraid: reservation reset failed
	when the "Cluster mode" of the adapter BIOS is enabled.
	So, whenever the reset occurs, the adapter goes to
	offline and just become unavailable.

	Jun'ichi Nomura [mailto:jnomura@mtc.biglobe.ne.jp]
	---

Release Date	: Mon Mar 07 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
Current Version : 2.20.4.6 (scsi module), 2.20.2.6 (cmm module)
Older Version	: 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)

1.	Added IOCTL backward compatibility.
	Convert megaraid_mm driver to new compat_ioctl entry points.
	I don't have easy access to hardware, so only compile tested.
		- Signed-off-by:Andi Kleen <ak@muc.de>

2.	megaraid_mbox fix: wrong order of arguments in memset()
	That, BTW, shows why cross-builds are useful-the only indication of
	problem had been a new warning showing up in sparse output on alpha
	build (number of exceeding 256 got truncated).
		- Signed-off-by: Al Viro
		<viro@parcelfarce.linux.theplanet.co.uk>

3.	Convert pci_module_init to pci_register_driver
	Convert from pci_module_init to pci_register_driver
	(from:http://kernelnewbies.org/KernelJanitors/TODO)
		- Signed-off-by: Domen Puncer <domen@coderock.org>

4.	Use the pre defined DMA mask constants from dma-mapping.h
	Use the DMA_{64,32}BIT_MASK constants from dma-mapping.h when calling
	pci_set_dma_mask() or pci_set_consistent_dma_mask(). See
	http://marc.theaimsgroup.com/?t=108001993000001&r=1&w=2 for more
	details.
		Signed-off-by: Tobias Klauser <tklauser@nuerscht.ch>
		Signed-off-by: Domen Puncer <domen@coderock.org>

5.	Remove SSID checking for Dobson, Lindsay, and Verde based products.
	Checking the SSVID/SSID for controllers which have Dobson, Lindsay,
	and Verde is unnecessary because device ID has been assigned by LSI
	and it is unique value. So, all controllers with these IOPs have to be
	supported by the driver regardless SSVID/SSID.

6.	Date Thu, 27 Jan 2005 04:31:09 +0100 
	From Herbert Poetzl <> 
	Subject RFC: assert_spin_locked() for 2.6 

	Greetings!

	overcautious programming will kill your kernel ;)
	ever thought about checking a spin_lock or even
	asserting that it must be held (maybe just for
	spinlock debugging?) ...

	there are several checks present in the kernel
	where somebody does a variation on the following:

	  BUG_ON(!spin_is_locked(&some_lock));

	so what's wrong about that? nothing, unless you
	compile the code with CONFIG_DEBUG_SPINLOCK but 
	without CONFIG_SMP ... in which case the BUG()
	will kill your kernel ...

	maybe it's not advised to make such assertions, 
	but here is a solution which works for me ...
	(compile tested for sh, x86_64 and x86, boot/run
	tested for x86 only)

	best,
	Herbert

		- Herbert Poetzl <herbert@13thfloor.at>, Thu, 27 Jan 2005

Release Date	: Thu Feb 03 12:27:22 EST 2005 - Seokmann Ju <sju@lsil.com>
Current Version	: 2.20.4.5 (scsi module), 2.20.2.5 (cmm module)
Older Version	: 2.20.4.4 (scsi module), 2.20.2.4 (cmm module)

1.	Modified name of two attributes in scsi_host_template.
	On Wed, 2005-02-02 at 10:56 -0500, Ju, Seokmann wrote:
	> +	.sdev_attrs			= megaraid_device_attrs,
	> +	.shost_attrs			= megaraid_class_device_attrs,

	These are, perhaps, slightly confusing names.
	The terms device and class_device have well defined meanings in the
	generic device model, neither of which is what you mean here.
	Why not simply megaraid_sdev_attrs and megaraid_shost_attrs?

	Other than this, it looks fine to me too.

Release Date	: Thu Jan 27 00:01:03 EST 2005 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.4.4 (scsi module), 2.20.2.5 (cmm module)
Older Version	: 2.20.4.3 (scsi module), 2.20.2.4 (cmm module)

1.	Bump up the version of scsi module due to its conflict.

Release Date	: Thu Jan 21 00:01:03 EST 2005 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.4.3 (scsi module), 2.20.2.5 (cmm module)
Older Version	: 2.20.4.2 (scsi module), 2.20.2.4 (cmm module)

1.	Remove driver ioctl for logical drive to scsi address translation and
	replace with the sysfs attribute. To remove drives and change
	capacity, application shall now use the device attribute to get the
	logical drive number for a scsi device. For adding newly created
	logical drives, class device attribute would be required to uniquely
	identify each controller.
		- Atul Mukker <atulm@lsil.com>

	"James, I've been thinking about this a little more, and you may be on
	to something here. Let each driver add files as such:"

		- Matt Domsch <Matt_Domsch@dell.com>, 12.15.2004
		 linux-scsi mailing list


	"Then, if you simply publish your LD number as an extra parameter of
	the device, you can look through /sys to find it."

		- James Bottomley <James.Bottomley@SteelEye.com>, 01.03.2005
		 linux-scsi mailing list


	"I don't see why not ... it's your driver, you can publish whatever
	extra information you need as scsi_device attributes; that was one of
	the designs of the extensible attribute system."

		- James Bottomley <James.Bottomley@SteelEye.com>, 01.06.2005
		 linux-scsi mailing list

2.	Add AMI megaraid support - Brian King <brking@charter.net>
		PCI_VENDOR_ID_AMI, PCI_DEVICE_ID_AMI_MEGARAID3,
		PCI_VENDOR_ID_AMI, PCI_SUBSYS_ID_PERC3_DC,

3.	Make some code static - Adrian Bunk <bunk@stusta.de>
	Date:	Mon, 15 Nov 2004 03:14:57 +0100

	The patch below makes some needlessly global code static.
	-wait_queue_head_t wait_q;
	+static wait_queue_head_t wait_q;

	Signed-off-by: Adrian Bunk <bunk@stusta.de>

4.	Added NEC ROMB support - NEC MegaRAID PCI Express ROMB controller
		PCI_VENDOR_ID_LSI_LOGIC, PCI_DEVICE_ID_MEGARAID_NEC_ROMB_2E,
		PCI_SUBSYS_ID_NEC, PCI_SUBSYS_ID_MEGARAID_NEC_ROMB_2E,

5.	Fixed Tape drive issue : For any Direct CDB command to physical device
	including tape, timeout value set by driver was 10 minutes. With this 
	value, most of command will return within timeout. However, for those
	command like ERASE or FORMAT, it takes more than an hour depends on
	capacity of the device and the command could be terminated before it 
	completes.
	To address this issue, the 'timeout' field in the DCDB command will 
	have NO TIMEOUT (i.e., 4) value as its timeout on DCDB command.



Release Date	: Thu Dec  9 19:10:23 EST 2004
	- Sreenivas Bagalkote <sreenib@lsil.com>

Current Version	: 2.20.4.2 (scsi module), 2.20.2.4 (cmm module)
Older Version	: 2.20.4.1 (scsi module), 2.20.2.3 (cmm module)

i.	Introduced driver ioctl that returns scsi address for a given ld.
	
	"Why can't the existing sysfs interfaces be used to do this?"
		- Brian King (brking@us.ibm.com)
	
	"I've looked into solving this another way, but I cannot see how
	to get this driver-private mapping of logical drive number-> HCTL
	without putting code something like this into the driver."

	"...and by providing a mapping a function to userspace, the driver
	is free to change its mapping algorithm in the future if necessary .."
		- Matt Domsch (Matt_Domsch@dell.com)

Release Date	: Thu Dec  9 19:02:14 EST 2004 - Sreenivas Bagalkote <sreenib@lsil.com>

Current Version	: 2.20.4.1 (scsi module), 2.20.2.3 (cmm module)
Older Version	: 2.20.4.1 (scsi module), 2.20.2.2 (cmm module)

i.	Fix a bug in kioc's dma buffer deallocation

Release Date	: Thu Nov  4 18:24:56 EST 2004 - Sreenivas Bagalkote <sreenib@lsil.com>

Current Version	: 2.20.4.1 (scsi module), 2.20.2.2 (cmm module)
Older Version	: 2.20.4.0 (scsi module), 2.20.2.1 (cmm module)

i.	Handle IOCTL cmd timeouts more properly.

ii.	pci_dma_sync_{sg,single}_for_cpu was introduced into megaraid_mbox
	incorrectly (instead of _for_device). Changed to appropriate 
	pci_dma_sync_{sg,single}_for_device.

Release Date	: Wed Oct 06 11:15:29 EDT 2004 - Sreenivas Bagalkote <sreenib@lsil.com>
Current Version	: 2.20.4.0 (scsi module), 2.20.2.1 (cmm module)
Older Version	: 2.20.4.0 (scsi module), 2.20.2.0 (cmm module)

i.	Remove CONFIG_COMPAT around register_ioctl32_conversion

Release Date	: Mon Sep 27 22:15:07 EDT 2004 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.4.0 (scsi module), 2.20.2.0 (cmm module)
Older Version	: 2.20.3.1 (scsi module), 2.20.2.0 (cmm module)

i.	Fix data corruption. Because of a typo in the driver, the IO packets
	were wrongly shared by the ioctl path. This causes a whole IO command
	to be replaced by an incoming ioctl command.

Release Date	: Tue Aug 24 09:43:35 EDT 2004 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.3.1 (scsi module), 2.20.2.0 (cmm module)
Older Version	: 2.20.3.0 (scsi module), 2.20.2.0 (cmm module)

i.	Function reordering so that inline functions are defined before they
	are actually used. It is now mandatory for GCC 3.4.1 (current stable)

	Declare some heavy-weight functions to be non-inlined,
	megaraid_mbox_build_cmd, megaraid_mbox_runpendq,
	megaraid_mbox_prepare_pthru, megaraid_mbox_prepare_epthru,
	megaraid_busywait_mbox

		- Andrew Morton, 08.19.2004
		linux-scsi mailing list

	"Something else to clean up after inclusion: every instance of an
	inline function is actually rendered as a full function call, because
	the function is always used before it is defined.  Atul, please
	re-arrange the code to eliminate the need for most (all) of the
	function prototypes at the top of each file, and define (not just
	declare with a prototype) each inline function before its first use"

		- Matt Domsch <Matt_Domsch@dell.com>, 07.27.2004
		linux-scsi mailing list


ii.	Display elapsed time (countdown) while waiting for FW to boot.

iii.	Module compilation reorder in Makefile so that unresolved symbols do
	not occur when driver is compiled non-modular.

		Patrick J. LoPresti <patl@users.sourceforge.net>, 8.22.2004
		linux-scsi mailing list


Release Date	: Thu Aug 19 09:58:33 EDT 2004 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.3.0 (scsi module), 2.20.2.0 (cmm module)
Older Version	: 2.20.2.0 (scsi module), 2.20.1.0 (cmm module)

i.	When copying the mailbox packets, copy only first 14 bytes (for 32-bit
	mailboxes) and only first 22 bytes (for 64-bit mailboxes). This is to
	avoid getting the stale values for busy bit. We want to set the busy
	bit just before issuing command to the FW.

ii.	In the reset handling, if the reset command is not owned by the
	driver, do not (wrongly) print information for the "attached" driver
	packet.

iii.	Have extended wait when issuing command in synchronous mode. This is
	required for the cases where the option ROM is disabled and there is
	no BIOS to start the controller. The FW starts to boot after receiving
	the first command from the driver. The current driver has 1 second
	timeout for the synchronous commands, which is far less than what is
	actually required. We now wait up to MBOX_RESET_TIME (180 seconds) for
	FW boot process.

iv.	In megaraid_mbox_product_info, clear the mailbox contents completely
	before preparing the command for inquiry3. This is to ensure that the
	FW does not get junk values in the command.

v.	Do away with the redundant LSI_CONFIG_COMPAT redefinition for
	CONFIG_COMPAT. Replace <asm/ioctl32.h> with <linux/ioctl32.h>

		- James Bottomley <James.Bottomley@SteelEye.com>, 08.17.2004
		 linux-scsi mailing list

vi.	Add support for 64-bit applications. Current drivers assume only
	32-bit applications, even on 64-bit platforms. Use the "data" and
	"buffer" fields of the mimd_t structure, instead of embedded 32-bit
	addresses in application mailbox and passthru structures.

vii.	Move the function declarations for the management module from
	megaraid_mm.h to megaraid_mm.c

		- Andrew Morton, 08.19.2004
		linux-scsi mailing list

viii.	Change default values for MEGARAID_NEWGEN, MEGARAID_MM, and
	MEGARAID_MAILBOX to 'n' in Kconfig.megaraid

		- Andrew Morton, 08.19.2004
		linux-scsi mailing list

ix.	replace udelay with msleep

x.	Typos corrected in comments and whitespace adjustments, explicit
	grouping of expressions.


Release Date	: Fri Jul 23 15:22:07 EDT 2004 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.2.0 (scsi module), 2.20.1.0 (cmm module)
Older Version	: 2.20.1.0 (scsi module), 2.20.0.0 (cmm module)

i.	Add PCI ids for Acer ROMB 2E solution

ii.	Add PCI ids for I4

iii.	Typo corrected for subsys id for megaraid sata 300-4x

iv.	Remove yield() while mailbox handshake in synchronous commands


	"My other main gripe is things like this:

	+	// wait for maximum 1 second for status to post
	+	for (i = 0; i < 40000; i++) {
	+		if (mbox->numstatus != 0xFF) break;
	+		udelay(25); yield();
	+	}

	which litter the driver.  Use of yield() in drivers is deprecated."

		- James Bottomley <James.Bottomley@SteelEye.com>, 07.14.2004
		 linux-scsi mailing list

v.	Remove redundant __megaraid_busywait_mbox routine

vi.	Fix bug in the management module, which causes a system lockup when the
	IO module is loaded and then unloaded, followed by executing any
	management utility. The current version of management module does not
	handle the adapter unregister properly.

	Specifically, it still keeps a reference to the unregistered
	controllers. To avoid this, the static array adapters has been
	replaced by a dynamic list, which gets updated every time an adapter
	is added or removed.

	Also, during unregistration of the IO module, the resources are
	now released in the exact reverse order of the allocation time
	sequence.


Release Date	: Fri Jun 25 18:58:43 EDT 2004 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.1.0
Older Version	: megaraid 2.20.0.1

i.	Stale list pointer in adapter causes kernel panic when module
	megaraid_mbox is unloaded


Release Date	: Thu Jun 24 20:37:11 EDT 2004 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.0.1
Older Version	: megaraid 2.20.0.00

i.	Modules are not 'y' by default, but depend on current definition of
	SCSI & PCI.

ii.	Redundant structure mraid_driver_t removed.

iii.	Miscellaneous indentation and goto/label fixes.
		- Christoph Hellwig <hch@infradead.org>, 06.24.2004 linux-scsi

iv.	scsi_host_put(), do just before completing HBA shutdown.



Release Date	: Mon Jun 21 19:53:54 EDT 2004 - Atul Mukker <atulm@lsil.com>
Current Version	: 2.20.0.0
Older Version	: megaraid 2.20.0.rc2 and 2.00.3

i.	Independent module to interact with userland applications and
	multiplex command to low level RAID module(s).

	"Shared code in a third module, a "library module", is an acceptable
	solution. modprobe automatically loads dependent modules, so users
	running "modprobe driver1" or "modprobe driver2" would automatically
	load the shared library module."

		- Jeff Garzik <jgarzik@pobox.com> 02.25.2004 LKML

	"As Jeff hinted, if your userspace<->driver API is consistent between
	your new MPT-based RAID controllers and your existing megaraid driver,
	then perhaps you need a single small helper module (lsiioctl or some
	better name), loaded by both mptraid and megaraid automatically, which
	handles registering the /dev/megaraid node dynamically. In this case,
	both mptraid and megaraid would register with lsiioctl for each
	adapter discovered, and lsiioctl would essentially be a switch,
	redirecting userspace tool ioctls to the appropriate driver."

		- Matt Domsch <Matt_Domsch@dell.com> 02.25.2004 LKML

ii.	Remove C99 initializations from pci_device id.

	"pci_id_table_g would be much more readable when not using C99
	initializers.
	PCI table doesn't change, there's lots of users that prefer the more
	readable variant.  And it's really far less and much easier to grok
	lines without C99 initializers."

		- Christoph Hellwig <hch@infradead.org>, 05.28.2004 linux-scsi

iii.	Many fixes as suggested by Christoph Hellwig <hch@infradead.org> on
	linux-scsi, 05.28.2004

iv.	We now support up to 32 parallel ioctl commands instead of current 1.
	There is a conscious effort to let memory allocation not fail for ioctl
	commands.

v.	Do away with internal memory management. Use pci_pool_(create|alloc)
	instead.

vi.	Kill tasklet when unloading the driver.

vii.	Do not use "host_lock', driver has fine-grain locks now to protect all
	data structures.

viii.	Optimize the build scatter-gather list routine. The callers already
	know the data transfer address and length.

ix.	Better implementation of error handling and recovery. Driver now
	performs extended errors recovery for instances like scsi cable pull.

x.	Disassociate the management commands with an overlaid scsi command.
	Driver now treats the management packets as special packets and has a
	dedicated callback routine.
