Skip site navigation (1)Skip section navigation (2)
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>