freebsd-nq/sys
Scott Long 5351742ea2 Mega update to the LSI MegaRAID driver:
1.  Implement a large set of ioctl shims so that the Linux management apps
from LSI will work.  This includes infrastructure to support adding, deleting
and rescanning arrays at runtime.  This is based on work from Doug Ambrosko,
heavily augmented by LSI and Yahoo.

2.  Implement full 64-bit DMA support.  Systems with more than 4GB of RAM
can now operate without the cost of bounce buffers.  Cards that cannot do
64-bit DMA will automatically revert to using bounce buffers.  This option
can be forced off by setting the 'hw.amr.force_sg32" tunable in the loader.
It should only be turned off for debugging purposes.  This work was sponsored
by Yahoo.

3.  Streamline the command delivery and interrupt handler paths after
much discussion with Dell and LSI.  The logic now closely matches the
intended design, making it both more robust and much faster.  Certain
i/o failures under heavy load should be fixed with this.

4.  Optimize the locking.  In the interrupt handler, the card can be checked
for completed commands without any locks held, due to the handler being
implicitely serialized and there being no need to look at any shared data.
Only grab the lock to return the command structure to the free pool.  A
small optimization can still be made to collect all of the completions
together and then free them together under a single lock.

Items 3 and 4 significantly increase the performance of the driver.  On an
LSI 320-2X card, transactions per second went from 13,000 to 31,000 in my
testing with these changes.  However, these changes are still fairly
experimental and shouldn't be merged to 6.x until there is more testing.

Thanks to Doug Ambrosko, LSI, Dell, and Yahoo for contributing towards
this.
2005-12-14 03:26:49 +00:00
..
alpha - Cleanup whitespace and extra ()s in vtophys() macros. 2005-12-06 21:09:01 +00:00
amd64 Revert previous commit. The BIOS braindamage is even worse than I 2005-12-13 18:29:10 +00:00
arm - Better use of the busdma API. 2005-12-09 23:55:41 +00:00
boot Add kernel module loading option for snd_atiixp(4). 2005-12-01 03:10:12 +00:00
bsm For consistency with more system include files, add a trailing '_' to 2005-05-29 16:11:34 +00:00
cam Fix a bug that caused some /dev entries to continue to exist after 2005-11-18 02:43:49 +00:00
coda Fix -Wundef from compiling the amd64 LINT. 2005-12-04 10:06:06 +00:00
compat In Linux, kernel parameters passed to ioctl are by value, while in FreeBSD 2005-12-13 15:32:52 +00:00
conf Remove all redundant option file names that don't hurt readability. 2005-12-12 10:15:11 +00:00
contrib This commit was generated by cvs2svn to compensate for changes in r153200, 2005-12-07 17:32:13 +00:00
crypto Add VIA/ACE "PadLock" support as a crypto(9) driver. 2005-08-18 00:30:22 +00:00
ddb Fix -Wundef. 2005-12-04 02:12:43 +00:00
dev Mega update to the LSI MegaRAID driver: 2005-12-14 03:26:49 +00:00
doc
fs Eradicate caddr_t from the VFS API. 2005-12-14 00:49:52 +00:00
gdb
geom Fix build breakage by fixing typo. 2005-12-09 11:38:02 +00:00
gnu Eradicate caddr_t from the VFS API. 2005-12-14 00:49:52 +00:00
i4b Fix -Wundef warnings found when compiling i386 LINT, GENERIC and 2005-12-05 11:58:35 +00:00
i386 MFamd64 rev 1.223: Use the TSC to implement DELAY() if not marked broken 2005-12-13 19:08:55 +00:00
ia64 - Cleanup whitespace and extra ()s in vtophys() macros. 2005-12-06 21:09:01 +00:00
isa MFamd64 rev 1.223: Use the TSC to implement DELAY() if not marked broken 2005-12-13 19:08:55 +00:00
isofs/cd9660 Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
kern Eradicate caddr_t from the VFS API. 2005-12-14 00:49:52 +00:00
libkern Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
modules Build xfs before xl. 2005-12-12 01:37:57 +00:00
net Add support for creating span ports so that one can snoop bridged traffic 2005-12-14 02:52:13 +00:00
net80211 When creating neighbor entries for an ahdemo bss apply the local 2005-12-14 01:18:36 +00:00
netatalk - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
netatm - Store pointer to the link-level address right in "struct ifnet" 2005-11-11 16:04:59 +00:00
netgraph Fix memory leak. 2005-12-09 07:09:44 +00:00
netinet Add a new feature for optimizining ipfw rulesets - substitution of the 2005-12-13 12:16:03 +00:00
netinet6 fixed a kernel crash at the initialization time of PIM-SM register interface 2005-12-09 04:42:19 +00:00
netipsec Fix -Wundef warnings found when compiling i386 LINT, GENERIC and 2005-12-05 11:58:35 +00:00
netipx Include ip_options.h for IPX-IP encapsulation. 2005-11-20 16:17:12 +00:00
netkey Fix -Wundef from compiling the amd64 LINT. 2005-12-04 10:06:06 +00:00
netnatm Use sparse initializers for "struct domain" and "struct protosw", 2005-11-09 13:29:16 +00:00
netncp Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
netsmb Prevent module unloading if there are active connections. 2005-11-22 02:15:46 +00:00
nfs Fixes for NFS crashes on architectures that require strict alignment. 2005-07-14 20:08:27 +00:00
nfs4client Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
nfsclient Improve upon rev 1.133 where NFS/TCP would not reconnect. 2005-12-12 23:18:05 +00:00
nfsserver Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
opencrypto Fix bogus check. It was possible to panic the kernel by giving 0 length. 2005-08-18 11:58:03 +00:00
pc98 Switch MACHINE to "pc98" on FreeBSD/pc98. 2005-12-08 12:35:12 +00:00
pccard Remove the kernel portion of OLDCARD. I'm working on a replacement 2005-09-25 21:29:32 +00:00
pci The if_ti Tigon I/II driver has moved to /sys/dev/ti 2005-12-10 00:38:33 +00:00
posix4 mqueue.h has been superceded by sys/mqueue.h thanks to David Xu's work. 2005-11-28 02:58:30 +00:00
powerpc - Cleanup whitespace and extra ()s in vtophys() macros. 2005-12-06 21:09:01 +00:00
rpc Fix -Wundef. 2005-12-04 02:12:43 +00:00
security Normalize a significant number of kernel malloc type names: 2005-10-31 15:41:29 +00:00
sparc64 Fix a bug introduced in rev. 1.5; for retrieving the device_t of the 2005-12-12 16:07:11 +00:00
sys Eradicate caddr_t from the VFS API. 2005-12-14 00:49:52 +00:00
tools Eradicate caddr_t from the VFS API. 2005-12-14 00:49:52 +00:00
ufs Eradicate caddr_t from the VFS API. 2005-12-14 00:49:52 +00:00
vm Assert that the page that is given to vm_page_free_toq() does not have any 2005-12-13 19:59:09 +00:00
Makefile