*BSD News Article 86504


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.carno.net.au!harbinger.cc.monash.edu.au!munnari.OZ.AU!news.mel.connect.com.au!news.mel.aone.net.au!grumpy.fl.net.au!news.webspan.net!ix.netcom.com!www.nntp.primenet.com!nntp.primenet.com!news.iquest.net!news.he.net!uwm.edu!newsfeeds.sol.net!news-xfer.netaxs.com!news.mathworks.com!howland.erols.net!newsxfer3.itd.umich.edu!news.bbnplanet.com!su-news-hub1.bbnplanet.com!news1.digital.com!pa.dec.com!nntpd.lkg.dec.com!not-for-mail
From: Peter Dettori <dettori@ozy.dec.com>
Newsgroups: comp.unix.bsd.netbsd.misc
Subject: dma bounce buffers
Date: Thu, 16 Jan 1997 09:40:08 -0800
Organization: DEC
Lines: 25
Message-ID: <32DE67F8.5C6@ozy.dec.com>
NNTP-Posting-Host: radiob.ozy.dec.com
Mime-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mailer: Mozilla 3.0 (WinNT; I)
CC: dettori
Xref: euryale.cc.adfa.oz.au comp.unix.bsd.netbsd.misc:5122

I have an isa device which requires either a 16K or 64K piece of memory
for dma transfer via the 8237 controller. This piece of memory must be
physically contiguous, not spanning 128K segments and in the lower
16Mbytes of memory.

looking at the dma code in sys/dev/isa/isadma.c, and in particular the
function isa_dmastart it seems to me that the operation is

1. check the size of memory passed in arguments
2. check the validity of the memory passed to it (spanning physically 
	contiguous memory)
3. if it passes the criteria above then use it directly
   else
	use a bounce buffer to dma transfer.

this is ok except it seems to me that the bounce buffers are always 4K
in size. So if i want to have a larger dma transfer i need to ensure
that the memory is valid myself.Is this correct? 

If so, i know how to check that the memory is ok but I need to be able
to bypass the standard malloc calls to allocate a piece of physically
contiguous memory. Does anyone know how to do this?

thanks,
Pete