From owner-freebsd-hackers Thu Jul 6 22:42:20 2000 Delivered-To: freebsd-hackers@freebsd.org Received: from gateway.posi.net (c1096725-a.smateo1.sfba.home.com [24.20.139.104]) by hub.freebsd.org (Postfix) with ESMTP id 575AE37BA6D for ; Thu, 6 Jul 2000 22:42:17 -0700 (PDT) (envelope-from kbyanc@posi.net) Received: from localhost (kbyanc@localhost) by gateway.posi.net (8.9.3/8.9.3) with ESMTP id WAA21858; Thu, 6 Jul 2000 22:45:10 -0700 (PDT) (envelope-from kbyanc@posi.net) Date: Thu, 6 Jul 2000 22:45:09 -0700 (PDT) From: Kelly Yancey To: "Kenneth D. Merry" Cc: Zhihui Zhang , freebsd-hackers@FreeBSD.ORG Subject: Re: Max DMA size In-Reply-To: <20000706144706.A25372@panzer.kdm.org> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG On Thu, 6 Jul 2000, Kenneth D. Merry wrote: > On Thu, Jul 06, 2000 at 15:51:34 -0400, Zhihui Zhang wrote: > > > > Can anyone tell me what factors determine the max DMA size (DMA counter on > > each controller or PCI bus related)? What is the typical max DMA size for > > a SCSI disk connected to a PCI bus? It seems to be much larger than > > MAXPHYS (128K). If so, does it mean we are not using full potential of > > DMA? So what's the problem if we enlarge MAXPHYS? > > > > Any help is appreciated. > > MAXPHYS determines the size of struct buf, which at the moment determines > the maximum size of a given DMA transaction to a SCSI controller. > > Typical modern SCSI controllers can handle much more than MAXPHYS data > (currently 128K) at a time. An exception is the Adaptec 154x controllers, > which can only handle about 64K of data. (Thus the reason I/O through the > CAM passthrough interface is limited to 64K instead of the full 128K. We > will have that limitation until we implement a way of determining the > maximum DMA size allowable for a given controller.) > > However, as Matt said, you have to be careful about increasing MAXPHYS too > much, since you could end up allocating too much memory. > > I think a better approach to increasing the amount of data that can be sent > at one time to a SCSI controller would be to implement some sort of buffer > chaining scheme. Most SCSI controllers can do scatter/gather DMA, and CAM > has facilities for it, so that would probably be the easiest way to go. > Hmm. My knowledge may be a bit dated in this matter, but as I recall the 8237 DMA controller standard on PCs only supports DMA requests up to 128k (and then only on the upper 4 DMA channels). The low 4 DMA channels were byte-granular and could only transfer 64k. Am I correct in assuming from this discussion that the state of affairs is somewhat different nowadays? Kelly -- Kelly Yancey - kbyanc@posi.net - Belmont, CA System Administrator, eGroups.com http://www.egroups.com/ Maintainer, BSD Driver Database http://www.posi.net/freebsd/drivers/ Coordinator, Team FreeBSD http://www.posi.net/freebsd/Team-FreeBSD/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message