|
@@ -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
|