diff options
Diffstat (limited to 'arch/powerpc/platforms/cell/iommu.c')
| -rw-r--r-- | arch/powerpc/platforms/cell/iommu.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/arch/powerpc/platforms/cell/iommu.c b/arch/powerpc/platforms/cell/iommu.c index b53560660b72..2b90ff8a93be 100644 --- a/arch/powerpc/platforms/cell/iommu.c +++ b/arch/powerpc/platforms/cell/iommu.c | |||
| @@ -197,7 +197,7 @@ static int tce_build_cell(struct iommu_table *tbl, long index, long npages, | |||
| 197 | 197 | ||
| 198 | io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset); | 198 | io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset); |
| 199 | 199 | ||
| 200 | for (i = 0; i < npages; i++, uaddr += IOMMU_PAGE_SIZE) | 200 | for (i = 0; i < npages; i++, uaddr += tbl->it_page_shift) |
| 201 | io_pte[i] = base_pte | (__pa(uaddr) & CBE_IOPTE_RPN_Mask); | 201 | io_pte[i] = base_pte | (__pa(uaddr) & CBE_IOPTE_RPN_Mask); |
| 202 | 202 | ||
| 203 | mb(); | 203 | mb(); |
| @@ -430,7 +430,7 @@ static void cell_iommu_setup_hardware(struct cbe_iommu *iommu, | |||
| 430 | { | 430 | { |
| 431 | cell_iommu_setup_stab(iommu, base, size, 0, 0); | 431 | cell_iommu_setup_stab(iommu, base, size, 0, 0); |
| 432 | iommu->ptab = cell_iommu_alloc_ptab(iommu, base, size, 0, 0, | 432 | iommu->ptab = cell_iommu_alloc_ptab(iommu, base, size, 0, 0, |
| 433 | IOMMU_PAGE_SHIFT); | 433 | IOMMU_PAGE_SHIFT_4K); |
| 434 | cell_iommu_enable_hardware(iommu); | 434 | cell_iommu_enable_hardware(iommu); |
| 435 | } | 435 | } |
| 436 | 436 | ||
| @@ -487,8 +487,10 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np, | |||
| 487 | window->table.it_blocksize = 16; | 487 | window->table.it_blocksize = 16; |
| 488 | window->table.it_base = (unsigned long)iommu->ptab; | 488 | window->table.it_base = (unsigned long)iommu->ptab; |
| 489 | window->table.it_index = iommu->nid; | 489 | window->table.it_index = iommu->nid; |
| 490 | window->table.it_offset = (offset >> IOMMU_PAGE_SHIFT) + pte_offset; | 490 | window->table.it_page_shift = IOMMU_PAGE_SHIFT_4K; |
| 491 | window->table.it_size = size >> IOMMU_PAGE_SHIFT; | 491 | window->table.it_offset = |
| 492 | (offset >> window->table.it_page_shift) + pte_offset; | ||
| 493 | window->table.it_size = size >> window->table.it_page_shift; | ||
| 492 | 494 | ||
| 493 | iommu_init_table(&window->table, iommu->nid); | 495 | iommu_init_table(&window->table, iommu->nid); |
| 494 | 496 | ||
| @@ -773,7 +775,7 @@ static void __init cell_iommu_init_one(struct device_node *np, | |||
| 773 | 775 | ||
| 774 | /* Setup the iommu_table */ | 776 | /* Setup the iommu_table */ |
| 775 | cell_iommu_setup_window(iommu, np, base, size, | 777 | cell_iommu_setup_window(iommu, np, base, size, |
| 776 | offset >> IOMMU_PAGE_SHIFT); | 778 | offset >> IOMMU_PAGE_SHIFT_4K); |
| 777 | } | 779 | } |
| 778 | 780 | ||
| 779 | static void __init cell_disable_iommus(void) | 781 | static void __init cell_disable_iommus(void) |
| @@ -1122,7 +1124,7 @@ static int __init cell_iommu_fixed_mapping_init(void) | |||
| 1122 | 1124 | ||
| 1123 | cell_iommu_setup_stab(iommu, dbase, dsize, fbase, fsize); | 1125 | cell_iommu_setup_stab(iommu, dbase, dsize, fbase, fsize); |
| 1124 | iommu->ptab = cell_iommu_alloc_ptab(iommu, dbase, dsize, 0, 0, | 1126 | iommu->ptab = cell_iommu_alloc_ptab(iommu, dbase, dsize, 0, 0, |
| 1125 | IOMMU_PAGE_SHIFT); | 1127 | IOMMU_PAGE_SHIFT_4K); |
| 1126 | cell_iommu_setup_fixed_ptab(iommu, np, dbase, dsize, | 1128 | cell_iommu_setup_fixed_ptab(iommu, np, dbase, dsize, |
| 1127 | fbase, fsize); | 1129 | fbase, fsize); |
| 1128 | cell_iommu_enable_hardware(iommu); | 1130 | cell_iommu_enable_hardware(iommu); |
