Folks, can you take a look at this tree and see if this is useful for USB: http://git.infradead.org/users/hch/misc.git/shortlog/refs/heads/dma-noncoherent-allocator The idea is that you use dma_alloc_attrs with the DMA_ATTR_NON_CONSISTENT now that I've made sure it is avaiable everywhere [1], and we can use dma_sync_single_* on it. The only special case USB will need are the HCD_LOCAL_MEM devices, for which we must use dma_alloc_coherent (or dma_alloc_attrs without DMA_ATTR_NON_CONSISTENT) and must skip the dma_sync_single_* calls, so we'll probably need USB subsystem wrappers for those calls. [1] except powerpc in this tree - I have another series to make powerpc use the generic dma noncoherent code, which would cover it.