lkml.org 
[lkml]   [2023]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 15/21] ARM: dma-mapping: always invalidate WT caches before DMA
    Date
    From: Arnd Bergmann <arnd@arndb.de>

    Most ARM CPUs can have write-back caches and that require
    cache management to be done in the dma_sync_*_for_device()
    operation. This is typically done in both writeback and
    writethrough mode.

    The cache-v4.S (arm720/740/7tdmi/9tdmi) and cache-v4wt.S
    (arm920t, arm940t) implementations are the exception here,
    and only do the cache management after the DMA is complete,
    in the dma_sync_*_for_cpu() operation.

    Change this for consistency with the other platforms. This
    should have no user visible effect.

    Signed-off-by: Arnd Bergmann <arnd@arndb.de>
    ---
    arch/arm/mm/cache-v4.S | 8 ++++----
    arch/arm/mm/cache-v4wt.S | 8 ++++----
    2 files changed, 8 insertions(+), 8 deletions(-)

    diff --git a/arch/arm/mm/cache-v4.S b/arch/arm/mm/cache-v4.S
    index 7787057e4990..e2b104876340 100644
    --- a/arch/arm/mm/cache-v4.S
    +++ b/arch/arm/mm/cache-v4.S
    @@ -117,23 +117,23 @@ ENTRY(v4_dma_flush_range)
    ret lr

    /*
    - * dma_unmap_area(start, size, dir)
    + * dma_map_area(start, size, dir)
    * - start - kernel virtual start address
    * - size - size of region
    * - dir - DMA direction
    */
    -ENTRY(v4_dma_unmap_area)
    +ENTRY(v4_dma_map_area)
    teq r2, #DMA_TO_DEVICE
    bne v4_dma_flush_range
    /* FALLTHROUGH */

    /*
    - * dma_map_area(start, size, dir)
    + * dma_unmap_area(start, size, dir)
    * - start - kernel virtual start address
    * - size - size of region
    * - dir - DMA direction
    */
    -ENTRY(v4_dma_map_area)
    +ENTRY(v4_dma_unmap_area)
    ret lr
    ENDPROC(v4_dma_unmap_area)
    ENDPROC(v4_dma_map_area)
    diff --git a/arch/arm/mm/cache-v4wt.S b/arch/arm/mm/cache-v4wt.S
    index 0b290c25a99d..652218752f88 100644
    --- a/arch/arm/mm/cache-v4wt.S
    +++ b/arch/arm/mm/cache-v4wt.S
    @@ -172,24 +172,24 @@ v4wt_dma_inv_range:
    .equ v4wt_dma_flush_range, v4wt_dma_inv_range

    /*
    - * dma_unmap_area(start, size, dir)
    + * dma_map_area(start, size, dir)
    * - start - kernel virtual start address
    * - size - size of region
    * - dir - DMA direction
    */
    -ENTRY(v4wt_dma_unmap_area)
    +ENTRY(v4wt_dma_map_area)
    add r1, r1, r0
    teq r2, #DMA_TO_DEVICE
    bne v4wt_dma_inv_range
    /* FALLTHROUGH */

    /*
    - * dma_map_area(start, size, dir)
    + * dma_unmap_area(start, size, dir)
    * - start - kernel virtual start address
    * - size - size of region
    * - dir - DMA direction
    */
    -ENTRY(v4wt_dma_map_area)
    +ENTRY(v4wt_dma_unmap_area)
    ret lr
    ENDPROC(v4wt_dma_unmap_area)
    ENDPROC(v4wt_dma_map_area)
    --
    2.39.2
    \
     
     \ /
      Last update: 2023-03-27 14:17    [W:6.259 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site