Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Oct 2005 16:10:52 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Dinesh Nair <dinesh@alphaque.com>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: correct use of bus_dmamap_sync
Message-ID:  <200510251610.53127.jhb@freebsd.org>
In-Reply-To: <435E7D8C.90401@alphaque.com>
References:  <435E3003.4050609@alphaque.com> <200510251327.59965.jhb@freebsd.org> <435E7D8C.90401@alphaque.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 25 October 2005 02:46 pm, Dinesh Nair wrote:
> On 10/26/05 01:27 John Baldwin said the following:
> > On Tuesday 25 October 2005 09:15 am, Dinesh Nair wrote:
> >>(must i malloc space for them before passing them into those functions,
> >> or will the call to bus_dmamem_alloc do it for me ?)
> >
> > bus_dmamem_alloc() will do it for you.
>
> thanx.
>
> > Probably not as the sync()'s don't really do anything with memory
> > allocated via bus_dmamem_alloc().  The operations are named from the
> > CPU's perspective,
>
> however, the man page at
> http://www.freebsd.org/cgi/man.cgi?query=bus_dmamap_sync&apropos=0&sektion=
>0&manpath=FreeBSD+5.4-stable&format=html says,
>
> "Although no explicit loading is required to access the memory referenced
> by the returned map, the synchronization requirements as described in the
> bus_dmamap_sync() section still apply."

Yes, and on some archs the sync() operations do have memory barriers in place, 
but there isn't any bounce buffering with bus_dmamem_alloc() memory.

> also, is bus_dmamap_load() required, since the same man page section above
> says it isnt ?

Well, you need it to get the physical address to pass to your device for it to 
do DMA against.

> have things changed between freebsd 4.x (which i'm using) and freebsd 5.x ?

I don't think so as far as the interface.

> > thus when you send data to your device, that is a WRITE operation (even
> > though your device is doing a DMA to read data), and when you get data
> > back from your device, that is a READ operation (even though your device
> > is doing a DMA to write the data into the buffer).
>
> thanx, the verbiage on the man page is slightly confusing with it's use of
> CPU, giving the opposite impression.

Yes, I know. :)

-- 
John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve"  =  http://www.FreeBSD.org



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200510251610.53127.jhb>