Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/cell: Fix cell iommu after it_page_shift changes

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>

+1 -1
+1 -1
arch/powerpc/platforms/cell/iommu.c
··· 197 197 198 198 io_pte = (unsigned long *)tbl->it_base + (index - tbl->it_offset); 199 199 200 - for (i = 0; i < npages; i++, uaddr += tbl->it_page_shift) 200 + for (i = 0; i < npages; i++, uaddr += (1 << tbl->it_page_shift)) 201 201 io_pte[i] = base_pte | (__pa(uaddr) & CBE_IOPTE_RPN_Mask); 202 202 203 203 mb();