On Tue, Oct 16, 2012 at 10:41 PM, James Bottomley <James.Bottomley@xxxxxxxxxxxxxxxxxxxxx> wrote: > On Tue, 2012-10-16 at 10:17 +0800, Bob Liu wrote: >> I think you need to declare that memory using >> dma_declare_coherent_memory() before >> alloc_from_coherent. > > This isn't true. Almost every platform has a mechanism for > manufacturing coherent memory (in the worst case, they just turn off the > CPU cache on a page and hand it out). The purpose of > dma_declare_coherent_memory() is to allow a per device declaration of > preferred regions ... usually because they reside either on the fast > path to the device or sometimes on the device itself. There are only a > handful of devices which need it, so in the ordinary course of events, > dma_alloc_coherent() is used without any memory declaration. > Sorry for my ambiguity. It obviously true we can use dma_alloc_coherent() without any memory declaration. I thought Tony's original idea was want to make dma_alloc_from_coherent() return success. But the dev->dma_mem check can't pass, so i suggested him using dma_declare_coherent_memory() to declare per-device area first. Thanks, --Bob -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>