Date: Wed, 17 May 2000 13:58:53 -0700 From: Alfred Perlstein <bright@wintelcom.net> To: Jin Guojun <jin@george.lbl.gov> Cc: hackers@FreeBSD.ORG Subject: Re: How to make system Sync Message-ID: <20000517135853.E14968@fw.wintelcom.net> In-Reply-To: <200005171900.MAA05337@george.lbl.gov>; from jin@george.lbl.gov on Wed, May 17, 2000 at 12:00:24PM -0700 References: <200005171900.MAA05337@george.lbl.gov>
next in thread | previous in thread | raw e-mail | index | archive | help
* Jin Guojun <jin@george.lbl.gov> [000517 12:34] wrote: > I had a couple of system out of sync problems. > > (1) PCI sync problem: > ATM adapter updates a buffer return pointer and generates intr, > but when driver pulls out the information that updated by adapter, > some memory in the last piece of the pool is garbage. > e.g. > head -> c0100000 > tail -> c0100400 > > c0100000 -> buf0 > c0100004 -> buf1 > ... > c0100100 -> bufn > ... > c0100160 -> bad address or 0 > ... > > If I let driver tsleep() for a while, the problem can be improved. > So, it looks like that adapter pushed (DMA) the data into memory, > but not been seen by CPU right way due to the DMA sync issue. > How can we sync the DMA transaction in BSD? I think the way you accomplish this is by telling the adapter to generate an interrupt when it's completed its DMA operation, you seem to be generating interupts at the start instead of the end. -Alfred 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?20000517135853.E14968>