cvs commit: src/sys/dev/iir iir.c iir.h iir_pci.c

Scott Long scottl at
Tue Feb 28 23:24:41 PST 2006

scottl      2006-03-01 07:24:39 UTC

  FreeBSD src repository

  Modified files:
    sys/dev/iir          iir.c iir.h iir_pci.c 
  Big update to the iir driver:
  - Don't use a common buffer in the softc to store per-command data.  Reserve
    a buffer in the command itself.
  - Don't allocate DMA memory for the kernel command structures when all you
    really need is DMA memory for the scratch buffer embedded in them.  Instead
    allocate a slab for the scratch buffers and divide it up as needed.
  - Call bus_dmamap_unload() at the completion of commands.
  - Preserve and clear the CAM CCB status flags at completion.
  - Reorder some low-level command operations to try to close races.
  - Limit the simq to 32 commands for now.  There are some serious problems
    with the driver under load that are not well understood, so keeping the
    simq lower helps avoid this.  It has been tested at a higher value, but
    this is a safe value that doesn't show much performance degredation.
  These changes allow the driver to work reliably with >4GB of memory on i386
  and amd64, and also work around deadlocks seen under very high load in
  certain situations.  The work-around is far from ideal, but without and
  documentation it is hard to know what the right fix is.
  MFC candidate
  Revision  Changes    Path
  1.14      +153 -156  src/sys/dev/iir/iir.c
  1.15      +8 -7      src/sys/dev/iir/iir.h
  1.16      +8 -7      src/sys/dev/iir/iir_pci.c

More information about the cvs-src mailing list