Do not do a cache invalidate on a PREREAD sync that is also a PREWRITE sync.
The PREWRITE handling does a writeback of any dirty cachelines, so there's no danger of an eviction during the DMA corrupting the buffer. There will be an invalidate done during POSTREAD, so doing it before the read too is wasted time.
This commit is contained in:
parent
c15cabeb69
commit
958e1dabc1
@ -1345,7 +1345,7 @@ _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) {
|
||||
if ((op & BUS_DMASYNC_PREREAD) && !(op & BUS_DMASYNC_PREWRITE)) {
|
||||
bpage = STAILQ_FIRST(&map->bpages);
|
||||
while (bpage != NULL) {
|
||||
cpu_dcache_inv_range((vm_offset_t)bpage->vaddr,
|
||||
|
Loading…
Reference in New Issue
Block a user