cvs commit: src/sys/dev/amr amr.c amr_cam.c amr_disk.c amr_pci.c amrio.h amrreg.h amrvar.h

Scott Long scottl at FreeBSD.org
Tue Dec 13 19:26:50 PST 2005


scottl      2005-12-14 03:26:49 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/amr          amr.c amr_cam.c amr_disk.c amr_pci.c 
                         amrio.h amrreg.h amrvar.h 
  Log:
  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.
  
  Revision  Changes    Path
  1.71      +739 -203  src/sys/dev/amr/amr.c
  1.18      +9 -6      src/sys/dev/amr/amr_cam.c
  1.38      +2 -2      src/sys/dev/amr/amr_disk.c
  1.32      +121 -61   src/sys/dev/amr/amr_pci.c
  1.7       +1 -1      src/sys/dev/amr/amrio.h
  1.9       +50 -6     src/sys/dev/amr/amrreg.h
  1.29      +28 -7     src/sys/dev/amr/amrvar.h


More information about the cvs-src mailing list