svn commit: r290219 - head/sys/mips/mips

Adrian Chadd adrian at FreeBSD.org
Sat Oct 31 00:29:27 UTC 2015


Author: adrian
Date: Sat Oct 31 00:29:26 2015
New Revision: 290219
URL: https://svnweb.freebsd.org/changeset/base/290219

Log:
  mips: do mips_sync() on sync operations to uncachable memory.
  
  mips24k/mips74k document that we need an explicit SYNC so to order
  things correctly, even with access to uncachable memory.
  We were doing calls to SYNC in the cache ops (inv, wbinv) but we
  weren't doing it for uncachable memory.

Modified:
  head/sys/mips/mips/busdma_machdep.c

Modified: head/sys/mips/mips/busdma_machdep.c
==============================================================================
--- head/sys/mips/mips/busdma_machdep.c	Sat Oct 31 00:04:44 2015	(r290218)
+++ head/sys/mips/mips/busdma_machdep.c	Sat Oct 31 00:29:26 2015	(r290219)
@@ -1220,11 +1220,12 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus
 	if (STAILQ_FIRST(&map->bpages))
 		_bus_dmamap_sync_bp(dmat, map, op);
 
-	if (dmat->flags & BUS_DMA_COHERENT)
-		return;
-
-	if (map->flags & DMAMAP_UNCACHEABLE)
+	if ((dmat->flags & BUS_DMA_COHERENT) ||
+	    (map->flags & DMAMAP_UNCACHEABLE)) {
+		if (op & BUS_DMASYNC_PREWRITE)
+			mips_sync();
 		return;
+	}
 
 	aligned = (map->flags & DMAMAP_CACHE_ALIGNED) ? 1 : 0;
 


More information about the svn-src-head mailing list