ARM: dma-mapping: avoid speculative prefetching fix
authorGrazvydas Ignotas <notasas@gmail.com>
Tue, 30 Jun 2015 22:38:10 +0000 (01:38 +0300)
committerGrazvydas Ignotas <notasas@gmail.com>
Fri, 3 Jul 2015 22:19:04 +0000 (01:19 +0300)
This partially reverts 2ffe2da3e71652d4f4cae19539b5c78c2a239136.

Cortex-A8 doesn't seem to be doing any speculative data prefetching,
there is no mention of this in the manual (unlike as for A9), only
instruction prefetch is mentioned. For us this fix is only causing
useless performance penalty, avoid it. The 2.6.27 kernel we used before
didn't have this fix and all seemed to be fine.

arch/arm/mm/cache-v7.S

index 39e3fb3..3953920 100644 (file)
@@ -329,9 +329,10 @@ ENDPROC(v7_dma_flush_range)
  */
 ENTRY(v7_dma_map_area)
        add     r1, r1, r0
  */
 ENTRY(v7_dma_map_area)
        add     r1, r1, r0
-       teq     r2, #DMA_FROM_DEVICE
-       beq     v7_dma_inv_range
-       b       v7_dma_clean_range
+       cmp     r2, #DMA_TO_DEVICE
+       beq     v7_dma_clean_range
+       bcs     v7_dma_inv_range
+       b       v7_dma_flush_range
 ENDPROC(v7_dma_map_area)
 
 /*
 ENDPROC(v7_dma_map_area)
 
 /*
@@ -341,9 +342,6 @@ ENDPROC(v7_dma_map_area)
  *     - dir   - DMA direction
  */
 ENTRY(v7_dma_unmap_area)
  *     - dir   - DMA direction
  */
 ENTRY(v7_dma_unmap_area)
-       add     r1, r1, r0
-       teq     r2, #DMA_TO_DEVICE
-       bne     v7_dma_inv_range
        mov     pc, lr
 ENDPROC(v7_dma_unmap_area)
 
        mov     pc, lr
 ENDPROC(v7_dma_unmap_area)