On Wednesday 07 May 2014 09:38:57 Panshilin wrote:
we use arm64 dma_alloc_coherent to get a expected non-cacheable buffer. but when we use the buffer as a dma memory for device, after cpu write datas to the buffer, It is not coherent in ddr so that device cann't get proper datas. so we find the LSK current version's dma alloc is malfunctional.
we have to flushcacheall after cpu write datas and It is ok. It shows that dma_alloc_coherent doesn't work properly.
In the beginning, we only supported arm64 machines that are fully cache coherent. This has only changed very recently, in v3.15-rc4 with commit c7a4a7658d689f "arm64: Make default dma_ops to be noncoherent" after someone else also tried running on a noncoherent machine.
Can you retry with the latest kernel?
Arnd