From owner-freebsd-questions Thu Apr 25 17:24:01 1996
Received: from localhost (daemon@localhost)
          by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id QAA19262
          Thu, 25 Apr 1996 16:23:31 -0700 (PDT)
Received: (from root@localhost)
          by freefall.freebsd.org (8.7.3/8.7.3) id QAA19174
          for questions-outgoing; Thu, 25 Apr 1996 16:21:23 -0700 (PDT)
Received: from phaeton.artisoft.com (phaeton.Artisoft.COM [198.17.250.211])
          by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id QAA19169
          for <questions@freebsd.org>; Thu, 25 Apr 1996 16:21:13 -0700 (PDT)
Received: (from terry@localhost) by phaeton.artisoft.com (8.6.11/8.6.9) id QAA25808; Thu, 25 Apr 1996 16:16:32 -0700
From: Terry Lambert <terry@lambert.org>
Message-Id: <199604252316.QAA25808@phaeton.artisoft.com>
Subject: Re: bounce buffers
To: alk@Think.COM (Tony Kimball)
Date: Thu, 25 Apr 1996 16:16:32 -0700 (MST)
Cc: terry@lambert.org, questions@FreeBSD.ORG
In-Reply-To: <199604252300.SAA03545@compound.Think.COM> from "Tony Kimball" at Apr 25, 96 06:00:50 pm
X-Mailer: ELM [version 2.4 PL24]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender: owner-questions@FreeBSD.ORG
X-Loop: FreeBSD.org
Precedence: bulk
Status: OR

>    Bounce buffers are required for 24 bit (ISA) bus master DMA
>    to addresses over 16M.
> 
> Only bus-mastering DMA, then?  I'm quite vague on PC hardware,
> so correct my errors, please, but is there not a slave mode of
> DMA operation as well?  Are bounce buffers required for slave mode?

No.  The on-board DMA controller is on the local memory bus and
therefore does not suffer the same access limitations as if it
were on the I/O bus.

Typically, the only device which may use this is the built-in FDC
on most systems, and that's useless because the FDC chips in Intel
hardware wither have no FIFO whatsoever, or an 8 or 16 character
FIFO, but the fact is undetectable without crashing the hardware
without the FIFO.

In any case, "hostmaster" DMA will not have the problem because
it will only access device memory from system space instead of
system memory from device space.  Device memory, by definition,
is mapped to locations accessable to the devices.  8-).


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.

From owner-freebsd-questions Fri Apr 26 10:56:52 1996
Received: from localhost (daemon@localhost)
          by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id KAA21919
          Fri, 26 Apr 1996 10:55:57 -0700 (PDT)
Received: (from root@localhost)
          by freefall.freebsd.org (8.7.3/8.7.3) id KAA21879
          for questions-outgoing; Fri, 26 Apr 1996 10:54:22 -0700 (PDT)
Received: from mistery.mcafee.com (jimd@mistery.mcafee.com [192.187.128.69])
          by freefall.freebsd.org (8.7.3/8.7.3) with SMTP id KAA21871
          for <questions@freebsd.org>; Fri, 26 Apr 1996 10:54:19 -0700 (PDT)
Received: (from jimd@localhost) by mistery.mcafee.com (8.6.11/8.6.9) id MAA08451; Fri, 26 Apr 1996 12:22:42 -0700
From: Jim Dennis <jimd@mistery.mcafee.com>
Message-Id: <199604261922.MAA08451@mistery.mcafee.com>
Subject: Re: bounce buffers
To: mrl@teleport.com (Mostyn/Annabella)
Date: Fri, 26 Apr 1996 12:22:42 -0700 (PDT)
Cc: questions@freebsd.org, mrl@teleport.com
In-Reply-To: <199604260547.WAA07623@linda.teleport.com> from "Mostyn/Annabella" at Apr 25, 96 10:47:36 pm
X-Mailer: ELM [version 2.4 PL24]
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Sender: owner-questions@freebsd.org
X-Loop: FreeBSD.org
Precedence: bulk
Status: OR

> 
> > > Under what circumstances are bounce buffers indicated?
> > In a system with an ISA busmaster and more than 16M of RAM.
> 
> What about a mixed PCI ISA busmaster - e.g.
> 
> Have a system with an Adaptec 2940 UW (PCI) and an
> Adaptec 1542 (ISA).
> 
> Have the bounce on for the 1542 - what about its impact for
> everything else?
> 
> Mostyn

	Here's the short explanation of "bounce buffers." (based
	much more on my general knowlege of PC hardware -- and not
	at all on any knowlege of FreeBSD code).

	The original designs for AT class machines couldn't address
	more then 24M of RAM -- and couldn't handle more than about
	12M on a motherboard.  The DMA chips used in this design can
	only access the first 16M of address space.

	Any OS that can support more than 16M of RAM on a PC architecture
	must therefore provide a mechanism (bounce buffers, translation 
	buffers, whatever) to ensure that all DMA (disk access) is 
	initially directed into the first 16M of physical address space
	(DMA chips don't participate in virtualization).

	Generally this is accomplished by directing the DMA into 
	the first 16M of physical address space and virtualizing it 
	back to the process address space.  One of the key performance
	issues for kernel designers (and the designers of DOS memory 
	management and DOS extenders products) is to minimize the
	need to "double buffer" -- Quarterdeck's phrase for: 
	"transfer in and copy out of the lower address space."

	Basically it's one of the warts that the PC architecture as 
	developed in it's old age.  This is a natural effect of 
	growing *far* beyond your initial design.  Remember that the 
	high end P6 with 128M of RAM and 8Gig of disk space is still
	essentially the same architecture as the original 16K PC
	(8088) with the audio cassete deck for it's storage medium.
	Worse still the last major change in the motherboard hardware
	was with the introduction of the AT.  The timer chips, floppy 
	controllers, DMA controllers, interrupt controllers and other
	support circuitry are largely unchanged (though most have been
	consolidated into a small number of actual chips -- the 
	register/control interfaces are the same).

Jim Dennis,
System Administrator,
McAfee Associates
 


Add some stuff on Jerry's "dotted quints".
