Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 6 Jul 2000 22:45:09 -0700 (PDT)
From:      Kelly Yancey <kbyanc@posi.net>
To:        "Kenneth D. Merry" <ken@kdm.org>
Cc:        Zhihui Zhang <zzhang@cs.binghamton.edu>, freebsd-hackers@FreeBSD.ORG
Subject:   Re: Max DMA size
Message-ID:  <Pine.BSF.4.21.0007062239260.21752-100000@gateway.posi.net>
In-Reply-To: <20000706144706.A25372@panzer.kdm.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.21.0007062239260.21752-100000>