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;
 
_______________________________________________
[email protected] mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "[email protected]"

Reply via email to