|
@@ -109,6 +109,9 @@ static void tce_build_pSeriesLP(struct iommu_table *tbl, long tcenum,
|
|
|
u64 rc;
|
|
|
union tce_entry tce;
|
|
|
|
|
|
+ tcenum <<= TCE_PAGE_FACTOR;
|
|
|
+ npages <<= TCE_PAGE_FACTOR;
|
|
|
+
|
|
|
tce.te_word = 0;
|
|
|
tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
|
|
|
tce.te_rdwr = 1;
|
|
@@ -143,9 +146,6 @@ static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
|
|
|
union tce_entry tce, *tcep;
|
|
|
long l, limit;
|
|
|
|
|
|
- tcenum <<= TCE_PAGE_FACTOR;
|
|
|
- npages <<= TCE_PAGE_FACTOR;
|
|
|
-
|
|
|
if (npages == 1)
|
|
|
return tce_build_pSeriesLP(tbl, tcenum, npages, uaddr,
|
|
|
direction);
|
|
@@ -164,6 +164,9 @@ static void tce_buildmulti_pSeriesLP(struct iommu_table *tbl, long tcenum,
|
|
|
__get_cpu_var(tce_page) = tcep;
|
|
|
}
|
|
|
|
|
|
+ tcenum <<= TCE_PAGE_FACTOR;
|
|
|
+ npages <<= TCE_PAGE_FACTOR;
|
|
|
+
|
|
|
tce.te_word = 0;
|
|
|
tce.te_rpn = (virt_to_abs(uaddr)) >> TCE_SHIFT;
|
|
|
tce.te_rdwr = 1;
|