From owner-freebsd-arch@FreeBSD.ORG Sat Jun 28 00:54:06 2003 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4995337B401 for ; Sat, 28 Jun 2003 00:54:06 -0700 (PDT) Received: from heron.mail.pas.earthlink.net (heron.mail.pas.earthlink.net [207.217.120.189]) by mx1.FreeBSD.org (Postfix) with ESMTP id 8A4B643F75 for ; Sat, 28 Jun 2003 00:54:05 -0700 (PDT) (envelope-from tlambert2@mindspring.com) Received: from user-2ivfjii.dialup.mindspring.com ([165.247.206.82] helo=mindspring.com) by heron.mail.pas.earthlink.net with asmtp (SSLv3:RC4-MD5:128) (Exim 3.33 #1) id 19WAX5-0005Or-00; Sat, 28 Jun 2003 00:54:04 -0700 Message-ID: <3EFD492A.60C18556@mindspring.com> Date: Sat, 28 Jun 2003 00:52:10 -0700 From: Terry Lambert X-Mailer: Mozilla 4.79 [en] (Win98; U) X-Accept-Language: en MIME-Version: 1.0 To: Andrew Gallatin References: <3EF3C12F.9060303@btc.adaptec.com> <16124.39930.142492.356163@grasshopper.cs.duke.edu> <3EFC9F2D.6020908@btc.adaptec.com> <16124.43999.333761.397624@grasshopper.cs.duke.edu> <3EFCAC7A.6060305@btc.adaptec.com> <16124.45051.919899.414795@grasshopper.cs.duke.edu> <16124.46454.595892.860118@grasshopper.cs.duke.edu> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-ELNK-Trace: b1a02af9316fbb217a47c185c03b154d40683398e744b8a4574c562441626f63374ab4d5f00590f3387f7b89c61deb1d350badd9bab72f9c350badd9bab72f9c cc: Scott Long cc: freebsd-arch@freebsd.org Subject: Re: API change for bus_dma X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 28 Jun 2003 07:54:06 -0000 Andrew Gallatin wrote: > Scott Long writes: > > The approach taken with busdma is that you don't assume coherency. The > > Unfortunately, in our application we must assume coherency in some > situations. We have kernel memory mmap'ed into user space for > zero-copy io of small messages. Doing a system call to force the dma > sync would add unacceptable latency. (we're talking sub 10us latencies > here, without syscalls). "contigmalloc" You have to do the same thing for BT848 and fram buffers that eat host memory instead of having their own to play in. In general, this has to be done in the device driver, very early on in the life of the system to stand any chance of succeeding: because we do not properly use ELF section attribute tags, it's not possible to defrag physical memory in FreeBSD to do these allocations later. The tags are necessary to identify code in the defragmentation code path so that it does not attempt to relocate itself while it's running itself. NB: FreeBSD doesn't support kernel paging and discard of init routines in device drivers, once the driver is operational, for the same reason: lack of section tags indicating "paging path" in the first instance, and lack of section tags indicating "discard after initialization" in the second. -- Terry