diff options
| author | Jeff Garzik <jeff@garzik.org> | 2006-09-17 01:05:43 -0400 |
|---|---|---|
| committer | Jeff Garzik <jeff@garzik.org> | 2006-09-17 01:05:43 -0400 |
| commit | 803db244b9f71102e366fd689000c1417b9a7508 (patch) | |
| tree | 2fe1abfd16cded8074905b6b91d9d1943e15325e /arch/powerpc/sysdev/dart_iommu.c | |
| parent | 8b98a37c4b00f3fbcf162281bd4595777e61241b (diff) | |
| parent | f04b92e97d21b1921c91ec1d6d5e8bbf8606b77a (diff) | |
Merge branch 'master' into upstream-fixes
Diffstat (limited to 'arch/powerpc/sysdev/dart_iommu.c')
| -rw-r--r-- | arch/powerpc/sysdev/dart_iommu.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/powerpc/sysdev/dart_iommu.c b/arch/powerpc/sysdev/dart_iommu.c index e32fadde1f7..03b4477dd7f 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 { |
