Two questions about streaming DMA flushing

Li Haifeng omycle at gmail.com
Tue Oct 30 22:15:04 EDT 2012


Sorry to disturb you.

I have two questions for streaming DMA flushing @ arch/arm/mm/cache-v7.S.

1.
332 ENTRY(v7_dma_map_area)
333         add     r1, r1, r0
334         teq     r2, #DMA_FROM_DEVICE
335         beq     v7_dma_inv_range
336         b       v7_dma_clean_range
337 ENDPROC(v7_dma_map_area)

The function of v7_dma_map_area will invalidate corresponding cache line
firstly and then clean the cache for “DMA_FROM_DEVICE”. I am confused the
sequence of the operations. IMO, the invalidate should be followed by the
clean action. Is it right?

2.
345 ENTRY(v7_dma_unmap_area)
346         add     r1, r1, r0
347         teq     r2, #DMA_TO_DEVICE
348         bne     v7_dma_inv_range
349         mov     pc, lr
350 ENDPROC(v7_dma_unmap_area)

v7_dma_unmap_area, will invalidate corresponding cache line for
“DMA_FROM_DEVICE”. But, at v7_dma_map_area, the invalidate has been done.
Why do this again?


Regards,
Haifeng Li
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20121031/fbdfd887/attachment-0001.html>


More information about the linux-arm-kernel mailing list