On Mon, 19 May 2014, Arnd Bergmann wrote: > > dma_alloc_coherent() on arm64 should return 32-bit addresses if the > > coherent_dma_mask is set to 32-bit. Which kernel version is this? > > The more important question is what happens to high buffers allocated elsewhere > that get passed into dma_map_sg by a device driver. I disagree. That is, the question about dma_map_sg is not more important (for ehci-hcd) than the question about dma_alloc_coherent. In this case it is particularly tricky. The driver calls dma_pool_create() several times in addition to calling dma_alloc_coherent(), and the hardware requires that all of those pools plus the coherent buffer have DMA addresses with the same upper 32 bits. As far as I know, the only way to enforce that is by requiring all those items either to be allocated in or to be mapped to the first 4 GB of memory. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html