From owner-cvs-src@FreeBSD.ORG Wed Mar 1 07:24:40 2006 Return-Path: X-Original-To: cvs-src@FreeBSD.org Delivered-To: cvs-src@FreeBSD.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id CD9B916A420; Wed, 1 Mar 2006 07:24:40 +0000 (GMT) (envelope-from scottl@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 98FFB43D4C; Wed, 1 Mar 2006 07:24:40 +0000 (GMT) (envelope-from scottl@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 k217Oedc006424; Wed, 1 Mar 2006 07:24:40 GMT (envelope-from scottl@repoman.freebsd.org) Received: (from scottl@localhost) by repoman.freebsd.org (8.13.1/8.13.1/Submit) id k217Oeer006423; Wed, 1 Mar 2006 07:24:40 GMT (envelope-from scottl) Message-Id: <200603010724.k217Oeer006423@repoman.freebsd.org> From: Scott Long Date: Wed, 1 Mar 2006 07:24:39 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Cc: Subject: cvs commit: src/sys/dev/iir iir.c iir.h iir_pci.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Mar 2006 07:24:41 -0000 scottl 2006-03-01 07:24:39 UTC FreeBSD src repository Modified files: sys/dev/iir iir.c iir.h iir_pci.c Log: 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