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 b53560660b7..2b90ff8a93b 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,  	io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset); -	for (i = 0; i < npages; i++, uaddr += IOMMU_PAGE_SIZE) +	for (i = 0; i < npages; i++, uaddr += tbl->it_page_shift)  		io_pte[i] = base_pte | (__pa(uaddr) & CBE_IOPTE_RPN_Mask);  	mb(); @@ -430,7 +430,7 @@ static void cell_iommu_setup_hardware(struct cbe_iommu *iommu,  {  	cell_iommu_setup_stab(iommu, base, size, 0, 0);  	iommu->ptab = cell_iommu_alloc_ptab(iommu, base, size, 0, 0, -					    IOMMU_PAGE_SHIFT); +					    IOMMU_PAGE_SHIFT_4K);  	cell_iommu_enable_hardware(iommu);  } @@ -487,8 +487,10 @@ cell_iommu_setup_window(struct cbe_iommu *iommu, struct device_node *np,  	window->table.it_blocksize = 16;  	window->table.it_base = (unsigned long)iommu->ptab;  	window->table.it_index = iommu->nid; -	window->table.it_offset = (offset >> IOMMU_PAGE_SHIFT) + pte_offset; -	window->table.it_size = size >> IOMMU_PAGE_SHIFT; +	window->table.it_page_shift = IOMMU_PAGE_SHIFT_4K; +	window->table.it_offset = +		(offset >> window->table.it_page_shift) + pte_offset; +	window->table.it_size = size >> window->table.it_page_shift;  	iommu_init_table(&window->table, iommu->nid); @@ -773,7 +775,7 @@ static void __init cell_iommu_init_one(struct device_node *np,  	/* Setup the iommu_table */  	cell_iommu_setup_window(iommu, np, base, size, -				offset >> IOMMU_PAGE_SHIFT); +				offset >> IOMMU_PAGE_SHIFT_4K);  }  static void __init cell_disable_iommus(void) @@ -1122,7 +1124,7 @@ static int __init cell_iommu_fixed_mapping_init(void)  		cell_iommu_setup_stab(iommu, dbase, dsize, fbase, fsize);  		iommu->ptab = cell_iommu_alloc_ptab(iommu, dbase, dsize, 0, 0, -						    IOMMU_PAGE_SHIFT); +						    IOMMU_PAGE_SHIFT_4K);  		cell_iommu_setup_fixed_ptab(iommu, np, dbase, dsize,  					     fbase, fsize);  		cell_iommu_enable_hardware(iommu);  | 
