> : > >> My question is about general idea of bus_dma usage for cache > : > >> operations. In my opinion we should not rely on bus_dmamap_sync() > : > >> behaviour as this function may do different things on different > : > >> architectures. This not always works as expected, which is clearly > : > >> visible in our case. Better solution is to use cpu-specific > : > >> functions implementing cache operations. Please comment on why > : > >> CPU-specific functions are not used... > > I think because busdma is supposed to abstract this out. The problem > is that the usb code chose different terms to represent these > operations than is typically used.
I don't think so. Bus_dmamap_sync() works in per-transfer basics. It does synchronization which is required _before_ and _after_ DMA transfer. We do not know and do not want to know any details about the synchronization - this is main idea of bus_dma subsystem. Of course, in most cases cache flush/invalidate will be preformed, but in we do not know that without looking into bus_dma implementation on given architecture. In my opinion main problem here is that bus_dmamap_sync() is not used in per-transfer basics. It is used to abstact cache operations - which is a bit different thing. -- Pozdrawiam. Piotr Zięcik _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "[email protected]"
