On Tuesday 18 December 2012 20:12:29 Andrew Turner wrote: > On Tue, 18 Dec 2012 13:06:44 +0100 > > Hans Petter Selasky <[email protected]> wrote: > > Hi Andrew, > > > > > The BUS_DMA_COHERENT flag does nothing on armv6 as we need the cache > > > enabled for atomic operations to work correctly and we would have to > > > disable the cache on the entire page. This is acceptable behaviour > > > from the description of the flag in the busdma man page. > > > > Yes, but when I allocate memory from the USB stack, then I want that > > memory to not be cached. It is simply not that useful to have that > > memory cached. I didn't check the latest state of busdma, but if I'm > > not mistaken, if the BUS_DMA_COHERENT flag is set on the DMA tag, the > > flush/invalidate will simply return and do nothing. Maybe that is the > > problem ... > > The exact meaning of BUS_DMA_COHERENT depends on the architecture. The > code is still required to call bus_dmamap_sync with a coherent map but > when the flag is implemented the cost of the operation will be reduced. > It doesn't guarantee the memory is uncached, it may be implemented that > way but the USB code can't rely on it. > > Andrew
The USB code doesn't rely on this flag. I'm wondering if BUSDMA by accident sets this flag, so that the cache sync ops are not called. --HPS _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "[email protected]"
