powerpc/powernv: Use it_page_shift in TCE build
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Fri, 6 Jun 2014 08:44:02 +0000 (18:44 +1000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Fri, 11 Jul 2014 06:05:48 +0000 (16:05 +1000)
This makes use of iommu_table::it_page_shift instead of TCE_SHIFT and
TCE_RPN_SHIFT hardcoded values.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/powernv/pci.c

index f91a4e5..b6cb996 100644 (file)
@@ -564,10 +564,11 @@ static int pnv_tce_build(struct iommu_table *tbl, long index, long npages,
                proto_tce |= TCE_PCI_WRITE;
 
        tces = tcep = ((__be64 *)tbl->it_base) + index - tbl->it_offset;
-       rpn = __pa(uaddr) >> TCE_SHIFT;
+       rpn = __pa(uaddr) >> tbl->it_page_shift;
 
        while (npages--)
-               *(tcep++) = cpu_to_be64(proto_tce | (rpn++ << TCE_RPN_SHIFT));
+               *(tcep++) = cpu_to_be64(proto_tce |
+                               (rpn++ << tbl->it_page_shift));
 
        /* Some implementations won't cache invalid TCEs and thus may not
         * need that flush. We'll probably turn it_type into a bit mask