summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/sysdev
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2006-09-13 23:07:18 +0200
committerPaul Mackerras <paulus@samba.org>2006-09-13 23:07:18 +0200
commitc547fc28ab3e8716076fdaf4bd0260c5d63a18f7 (patch)
tree34af1fa64a63618660187ae58ad182665a1861ef /arch/powerpc/sysdev
parent[POWERPC] Export copy_4K_page() (diff)
parentMerge branch 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/... (diff)
downloadlinux-c547fc28ab3e8716076fdaf4bd0260c5d63a18f7.tar.xz
linux-c547fc28ab3e8716076fdaf4bd0260c5d63a18f7.zip
Merge branch 'linux-2.6'
Diffstat (limited to 'arch/powerpc/sysdev')
-rw-r--r--arch/powerpc/sysdev/dart_iommu.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c
index e32fadde1f77..03b4477dd7f0 100644
--- a/arch/powerpc/sysdev/dart_iommu.c
+++ b/arch/powerpc/sysdev/dart_iommu.c
@@ -139,6 +139,7 @@ wait_more:
static void dart_flush(struct iommu_table *tbl)
{
+ mb();
if (dart_dirty) {
dart_tlb_invalidate_all();
dart_dirty = 0;
@@ -172,9 +173,13 @@ static void dart_build(struct iommu_table *tbl, long index,
uaddr += DART_PAGE_SIZE;
}
+ /* make sure all updates have reached memory */
+ mb();
+ in_be32((unsigned __iomem *)dp);
+ mb();
+
if (dart_is_u4) {
rpn = index;
- mb(); /* make sure all updates have reached memory */
while (npages--)
dart_tlb_invalidate_one(rpn++);
} else {