diff options
| -rw-r--r-- | arch/powerpc/platforms/cell/iommu.c | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index 187a723eafcd..7a861cb960d2 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
| @@ -348,9 +348,8 @@ static unsigned long *cell_iommu_alloc_ptab(struct cbe_iommu *iommu, | |||
| 348 | ptab = page_address(page); | 348 | ptab = page_address(page); |
| 349 | memset(ptab, 0, ptab_size); | 349 | memset(ptab, 0, ptab_size); |
| 350 | 350 | ||
| 351 | /* number of pages needed for a page table */ | 351 | /* number of 4K pages needed for a page table */ |
| 352 | n_pte_pages = (pages_per_segment * | 352 | n_pte_pages = (pages_per_segment * sizeof(unsigned long)) >> 12; |
| 353 | sizeof(unsigned long)) >> IOMMU_PAGE_SHIFT; | ||
| 354 | 353 | ||
| 355 | pr_debug("%s: iommu[%d]: stab at %p, ptab at %p, n_pte_pages: %lu\n", | 354 | pr_debug("%s: iommu[%d]: stab at %p, ptab at %p, n_pte_pages: %lu\n", |
| 356 | __FUNCTION__, iommu->nid, iommu->stab, ptab, | 355 | __FUNCTION__, iommu->nid, iommu->stab, ptab, |
| @@ -377,8 +376,8 @@ static unsigned long *cell_iommu_alloc_ptab(struct cbe_iommu *iommu, | |||
| 377 | pr_debug("\toverlap at %d, skipping\n", i); | 376 | pr_debug("\toverlap at %d, skipping\n", i); |
| 378 | continue; | 377 | continue; |
| 379 | } | 378 | } |
| 380 | iommu->stab[i] = reg | (__pa(ptab) + n_pte_pages * | 379 | iommu->stab[i] = reg | (__pa(ptab) + (n_pte_pages << 12) * |
| 381 | IOMMU_PAGE_SIZE * (i - start_seg)); | 380 | (i - start_seg)); |
| 382 | pr_debug("\t[%d] 0x%016lx\n", i, iommu->stab[i]); | 381 | pr_debug("\t[%d] 0x%016lx\n", i, iommu->stab[i]); |
| 383 | } | 382 | } |
| 384 | 383 | ||
