| From 7261b956b276aa97fbf60d00f1d7717d2ea6ee78 Mon Sep 17 00:00:00 2001 |
| From: Michael Ellerman <mpe@ellerman.id.au> |
| Date: Fri, 3 Apr 2015 14:11:54 +1100 |
| Subject: powerpc/cell: Fix cell iommu after it_page_shift changes |
| |
| From: Michael Ellerman <mpe@ellerman.id.au> |
| |
| commit 7261b956b276aa97fbf60d00f1d7717d2ea6ee78 upstream. |
| |
| The patch to add it_page_shift incorrectly changed the increment of |
| uaddr to use it_page_shift, rather then (1 << it_page_shift). |
| |
| This broke booting on at least some Cell blades, as the iommu was |
| basically non-functional. |
| |
| Fixes: 3a553170d35d ("powerpc/iommu: Add it_page_shift field to determine iommu page size") |
| Signed-off-by: Michael Ellerman <michael@ellerman.id.au> |
| Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| arch/powerpc/platforms/cell/iommu.c | 2 +- |
| 1 file changed, 1 insertion(+), 1 deletion(-) |
| |
| --- 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_t |
| |
| io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset); |
| |
| - for (i = 0; i < npages; i++, uaddr += tbl->it_page_shift) |
| + for (i = 0; i < npages; i++, uaddr += (1 << tbl->it_page_shift)) |
| io_pte[i] = base_pte | (__pa(uaddr) & CBE_IOPTE_RPN_Mask); |
| |
| mb(); |