aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt2005-11-10 14:54:58 +1100
committerPaul Mackerras2005-11-10 15:03:37 +1100
commit47c2ac8cc3cf7c484e131d10cb812b6ab198885a (patch)
tree4a7dc839ec760ecbddd027c1fe5e0817ec26f431
parent87655ff26817993932b7d049c4df226fb2c0ac5f (diff)
[PATCH] powerpc: 64k pages vs. U3 iommu
That DART (U3 iommu) code didn't properly scale the number of entries when using !4k pages. That caused crashes when booting G5s with more than 2Gb of RAM. This fixes it. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: Paul Mackerras <paulus@samba.org>
-rw-r--r--arch/powerpc/sysdev/u3_iommu.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/arch/powerpc/sysdev/u3_iommu.c b/arch/powerpc/sysdev/u3_iommu.c
index 543d65909812..f32baf7f4693 100644
--- a/arch/powerpc/sysdev/u3_iommu.c
+++ b/arch/powerpc/sysdev/u3_iommu.c
@@ -226,7 +226,7 @@ static void iommu_table_u3_setup(void)
iommu_table_u3.it_busno = 0;
iommu_table_u3.it_offset = 0;
/* it_size is in number of entries */
- iommu_table_u3.it_size = dart_tablesize / sizeof(u32);
+ iommu_table_u3.it_size = (dart_tablesize / sizeof(u32)) >> DART_PAGE_FACTOR;
/* Initialize the common IOMMU code */
iommu_table_u3.it_base = (unsigned long)dart_vbase;