diff options
author | Bob Breuer <breuerr@mc.net> | 2006-06-20 03:36:56 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2006-06-20 03:36:56 -0400 |
commit | 3185d4d2873a46ca1620d784013f285522091aa0 (patch) | |
tree | 2235141eace69aec31aebe70a60bc3e030928181 /arch/sparc/mm/iommu.c | |
parent | 92d452f0eb10774fb7779abf876baf9dfb295e6f (diff) |
[SPARC]: Fix iommu_flush_iotlb end address
Fix the calculation of the end address when flushing iotlb entries to
ram. This bug has been a cause of esp dma errors, and it affects
HyperSPARC systems much worse than SuperSPARC systems.
Signed-off-by: Bob Breuer <breuerr@mc.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'arch/sparc/mm/iommu.c')
-rw-r--r-- | arch/sparc/mm/iommu.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/sparc/mm/iommu.c b/arch/sparc/mm/iommu.c index 77840c804786..7215849db392 100644 --- a/arch/sparc/mm/iommu.c +++ b/arch/sparc/mm/iommu.c | |||
@@ -144,8 +144,9 @@ static void iommu_flush_iotlb(iopte_t *iopte, unsigned int niopte) | |||
144 | unsigned long start; | 144 | unsigned long start; |
145 | unsigned long end; | 145 | unsigned long end; |
146 | 146 | ||
147 | start = (unsigned long)iopte & PAGE_MASK; | 147 | start = (unsigned long)iopte; |
148 | end = PAGE_ALIGN(start + niopte*sizeof(iopte_t)); | 148 | end = PAGE_ALIGN(start + niopte*sizeof(iopte_t)); |
149 | start &= PAGE_MASK; | ||
149 | if (viking_mxcc_present) { | 150 | if (viking_mxcc_present) { |
150 | while(start < end) { | 151 | while(start < end) { |
151 | viking_mxcc_flush_page(start); | 152 | viking_mxcc_flush_page(start); |