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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to