[PATCH] mmc: msm: fix dma usage not to use internal APIs

Russell King - ARM Linux linux at arm.linux.org.uk
Fri Jan 21 16:42:33 EST 2011


On Fri, Jan 21, 2011 at 01:37:15PM -0800, Brent DeGraaf wrote:
> Russell,
> 
> Thanks for your comments. Yes, reverting is OK. The writel's are doing the
> controller write after the barrier so even though it'll be a little
> slower, it will be correct.
> 
> Regarding the "unnecessary" pre-invalidate, yeah, I misspoke.  I meant
> unnecessary POST-invalidates for non-speculative cpus.  I just checked and
> it looks like someone's already put a "FIXME" in the current 2.6.37 source
> for those.

We don't do post-invalidates either.  We may call into the processor
specific code, but the sum of what they do for pre-ARMv6 CPUs is as
follows:

arch/arm/mm/proc-arm1020e.S:ENTRY(arm1020e_dma_unmap_area)
arch/arm/mm/proc-arm1020e.S-    mov     pc, lr
arch/arm/mm/proc-arm1020e.S-ENDPROC(arm1020e_dma_unmap_area)
--
arch/arm/mm/proc-arm1020.S:ENTRY(arm1020_dma_unmap_area)
arch/arm/mm/proc-arm1020.S-     mov     pc, lr
arch/arm/mm/proc-arm1020.S-ENDPROC(arm1020_dma_unmap_area)
--
arch/arm/mm/proc-arm1022.S:ENTRY(arm1022_dma_unmap_area)
arch/arm/mm/proc-arm1022.S-     mov     pc, lr
arch/arm/mm/proc-arm1022.S-ENDPROC(arm1022_dma_unmap_area)
--
arch/arm/mm/proc-arm1026.S:ENTRY(arm1026_dma_unmap_area)
arch/arm/mm/proc-arm1026.S-     mov     pc, lr
arch/arm/mm/proc-arm1026.S-ENDPROC(arm1026_dma_unmap_area)
--
arch/arm/mm/proc-arm920.S:ENTRY(arm920_dma_unmap_area)
arch/arm/mm/proc-arm920.S-      mov     pc, lr
arch/arm/mm/proc-arm920.S-ENDPROC(arm920_dma_unmap_area)
--
arch/arm/mm/proc-arm922.S:ENTRY(arm922_dma_unmap_area)
arch/arm/mm/proc-arm922.S-      mov     pc, lr
arch/arm/mm/proc-arm922.S-ENDPROC(arm922_dma_unmap_area)
--
arch/arm/mm/proc-arm925.S:ENTRY(arm925_dma_unmap_area)
arch/arm/mm/proc-arm925.S-      mov     pc, lr
arch/arm/mm/proc-arm925.S-ENDPROC(arm925_dma_unmap_area)
--
arch/arm/mm/proc-arm926.S:ENTRY(arm926_dma_unmap_area)
arch/arm/mm/proc-arm926.S-      mov     pc, lr
arch/arm/mm/proc-arm926.S-ENDPROC(arm926_dma_unmap_area)
--
arch/arm/mm/proc-arm940.S:ENTRY(arm940_dma_unmap_area)
arch/arm/mm/proc-arm940.S-      mov     pc, lr
arch/arm/mm/proc-arm940.S-ENDPROC(arm940_dma_unmap_area)
--
arch/arm/mm/proc-arm946.S:ENTRY(arm946_dma_unmap_area)
arch/arm/mm/proc-arm946.S-      mov     pc, lr
arch/arm/mm/proc-arm946.S-ENDPROC(arm946_dma_unmap_area)
--
arch/arm/mm/proc-feroceon.S:ENTRY(feroceon_dma_unmap_area)
arch/arm/mm/proc-feroceon.S-    mov     pc, lr
arch/arm/mm/proc-feroceon.S-ENDPROC(feroceon_dma_unmap_area)
--
arch/arm/mm/proc-mohawk.S:ENTRY(mohawk_dma_unmap_area)
arch/arm/mm/proc-mohawk.S-      mov     pc, lr
arch/arm/mm/proc-mohawk.S-ENDPROC(mohawk_dma_unmap_area)
--
arch/arm/mm/proc-xsc3.S:ENTRY(xsc3_dma_unmap_area)
arch/arm/mm/proc-xsc3.S-        mov     pc, lr
arch/arm/mm/proc-xsc3.S-ENDPROC(xsc3_dma_unmap_area)
--
arch/arm/mm/proc-xscale.S:ENTRY(xscale_dma_unmap_area)
arch/arm/mm/proc-xscale.S-      mov     pc, lr
arch/arm/mm/proc-xscale.S-ENDPROC(xscale_dma_unmap_area)

So we don't do anything for non-speculative prefetching CPUs on unmap.



More information about the linux-arm-kernel mailing list