From owner-cvs-all@FreeBSD.ORG Thu Jan 26 22:04:22 2006 Return-Path: X-Original-To: cvs-all@FreeBSD.org Delivered-To: cvs-all@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 963CD16A420; Thu, 26 Jan 2006 22:04:22 +0000 (GMT) (envelope-from ambrisko@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id F1BDE43D49; Thu, 26 Jan 2006 22:04:21 +0000 (GMT) (envelope-from ambrisko@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.13.1/8.13.1) with ESMTP id k0QM4LZE015754; Thu, 26 Jan 2006 22:04:21 GMT (envelope-from ambrisko@repoman.freebsd.org) Received: (from ambrisko@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k0QM4LLP015753; Thu, 26 Jan 2006 22:04:21 GMT (envelope-from ambrisko) Message-Id: <200601262204.k0QM4LLP015753@repoman.freebsd.org> From: Doug Ambrisko Date: Thu, 26 Jan 2006 22:04:21 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: RELENG_6 Cc: Subject: cvs commit: src/sys/dev/amr amr.c amr_cam.c amr_compat.h amr_disk.c amr_linux.c amr_pci.c amrio.h amrreg.h amrvar.h X-BeenThere: cvs-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the entire tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Jan 2006 22:04:22 -0000 ambrisko 2006-01-26 22:04:21 UTC FreeBSD src repository Modified files: (Branch: RELENG_6) sys/dev/amr amr.c amr_cam.c amr_disk.c amr_pci.c amrio.h amrreg.h amrvar.h Added files: (Branch: RELENG_6) sys/dev/amr amr_linux.c Removed files: (Branch: RELENG_6) sys/dev/amr amr_compat.h Log: Sync to -current Scott's Mega Update, fixes and Linux ioctl wrapper. 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 Ambrisko, LSI, Dell, and Yahoo for contributing towards this. These have now had more testing and Scott requested them to be merged before the freeze. Revision Changes Path 1.65.2.3 +759 -218 src/sys/dev/amr/amr.c 1.15.2.1 +10 -16 src/sys/dev/amr/amr_cam.c 1.6.12.1 +0 -108 src/sys/dev/amr/amr_compat.h (dead) 1.35.2.1 +8 -27 src/sys/dev/amr/amr_disk.c 1.1.2.1 +191 -0 src/sys/dev/amr/amr_linux.c (new) 1.29.2.1 +123 -65 src/sys/dev/amr/amr_pci.c 1.6.8.1 +1 -1 src/sys/dev/amr/amrio.h 1.8.2.1 +52 -8 src/sys/dev/amr/amrreg.h 1.26.2.1 +31 -39 src/sys/dev/amr/amrvar.h