New USB stack and Zero copy.

John Baldwin jhb at freebsd.org
Thu Jul 5 21:22:06 UTC 2007


On Thursday 05 July 2007 03:31:59 am Hans Petter Selasky wrote:
> On Wednesday 04 July 2007 19:35, John-Mark Gurney wrote:
> > Hans Petter Selasky wrote this message on Wed, Jul 04, 2007 at 09:01 
+0200:
> > > Also: How is the easiest way to load memory pages into DMA ? And I want
> > > that the loadig works like this, that when the page must be bounced it
> > > should not allocate a bounce buffer, hence I already have a bounce
> > > buffer. I only need to know which pages I can forward directly to the 
USB
> > > hardware, and the rest I will bounce somewhere else.
> >
> > Why do you not want to let bus_dma do the bouncing for you?  If it's
> > to save a copy to another buffer, why don't you load the final buffer
> > into bus_dma?
> 
> Because if I let bus_dma do the bounching, I cannot do this while holding a 
> mutex, hence allocating DMA'able memory on the fly is not so good.

This is not a hard problem to solve, every other driver using bus_dma solves 
it.  Just make sure your driver is in a sane state and drop the lock while 
you let bus_dmamap_load() map/copy things for you.

-- 
John Baldwin


More information about the freebsd-usb mailing list