As per Linux Documentation/DMA-API.txt dma_alloc_coherent allocates a region of <size> bytes of consistent memory.
I tried to go to the implementation of dma_alloc_coherent for x86. This function will call ops->alloc, which for intel platforms is intel_alloc_coherent.
intel_alloc_coherent uses alloc_pages to allocate virtual addresses:
page = alloc_pages(flags, order);
Then how in this implementation it is made sure that the memory allocated is not cached by processor in its L1 or higher level cache?