summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2012-01-11 16:53:51 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2012-01-11 16:53:51 +0000
commitfbc68e09a0f5a13ae5dfa86c68720004dbbf46a0 (patch)
tree591e14b4ac97f8edcb335b1327fe2ad2906093c3
parent5f5cbaa5f6d44d5f62a291801325f3d3e6896b06 (diff)
downloadFreeBSD-src-fbc68e09a0f5a13ae5dfa86c68720004dbbf46a0.zip
FreeBSD-src-fbc68e09a0f5a13ae5dfa86c68720004dbbf46a0.tar.gz
Add a memory barrier to bus_dmamap_sync(), as should have always been
present. We need a sync instead of eieio, as eieio does not enforce storage ordering between main and device memory.
-rw-r--r--sys/powerpc/powerpc/busdma_machdep.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/sys/powerpc/powerpc/busdma_machdep.c b/sys/powerpc/powerpc/busdma_machdep.c
index 9ebc097..7f9f8ec 100644
--- a/sys/powerpc/powerpc/busdma_machdep.c
+++ b/sys/powerpc/powerpc/busdma_machdep.c
@@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$");
#include <machine/atomic.h>
#include <machine/bus.h>
+#include <machine/cpufunc.h>
#include <machine/md_var.h>
#include "iommu_if.h"
@@ -979,6 +980,8 @@ _bus_dmamap_sync(bus_dma_tag_t dmat, bus_dmamap_t map, bus_dmasync_op_t op)
dmat->bounce_zone->total_bounced++;
}
}
+
+ powerpc_sync();
}
static void
OpenPOWER on IntegriCloud