From 2dfc0cd1b1b5a457f3e71d6888d3466c9aba1f20 Mon Sep 17 00:00:00 2001 From: Olivier Houchard Date: Sun, 2 Feb 2014 22:26:30 +0000 Subject: [PATCH] Invalidate cachelines for bounce pages on PREREAD too, there may still be stale entries from a previous transfer. --- sys/arm/arm/busdma_machdep-v6.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/sys/arm/arm/busdma_machdep-v6.c b/sys/arm/arm/busdma_machdep-v6.c index e7f01c44743..6cbcae439c5 100644 --- a/sys/arm/arm/busdma_machdep-v6.c +++ b/sys/arm/arm/busdma_machdep-v6.c @@ -1220,6 +1220,17 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op) dmat->bounce_zone->total_bounced++; } + if (op & BUS_DMASYNC_PREREAD) { + bpage = STAILQ_FIRST(&map->bpages); + while (bpage != NULL) { + cpu_dcache_inv_range((vm_offset_t)bpage->vaddr, + bpage->datacount); + l2cache_inv_range((vm_offset_t)bpage->vaddr, + (vm_offset_t)bpage->busaddr, + bpage->datacount); + bpage = STAILQ_NEXT(bpage, links); + } + } if (op & BUS_DMASYNC_POSTREAD) { while (bpage != NULL) { vm_offset_t startv;