|
@@ -628,11 +628,11 @@ static void pnv_tce_free_rm(struct iommu_table *tbl, long index, long npages)
|
|
|
|
|
|
void pnv_pci_setup_iommu_table(struct iommu_table *tbl,
|
|
|
void *tce_mem, u64 tce_size,
|
|
|
- u64 dma_offset)
|
|
|
+ u64 dma_offset, unsigned page_shift)
|
|
|
{
|
|
|
tbl->it_blocksize = 16;
|
|
|
tbl->it_base = (unsigned long)tce_mem;
|
|
|
- tbl->it_page_shift = IOMMU_PAGE_SHIFT_4K;
|
|
|
+ tbl->it_page_shift = page_shift;
|
|
|
tbl->it_offset = dma_offset >> tbl->it_page_shift;
|
|
|
tbl->it_index = 0;
|
|
|
tbl->it_size = tce_size >> 3;
|
|
@@ -657,7 +657,7 @@ static struct iommu_table *pnv_pci_setup_bml_iommu(struct pci_controller *hose)
|
|
|
if (WARN_ON(!tbl))
|
|
|
return NULL;
|
|
|
pnv_pci_setup_iommu_table(tbl, __va(be64_to_cpup(basep)),
|
|
|
- be32_to_cpup(sizep), 0);
|
|
|
+ be32_to_cpup(sizep), 0, IOMMU_PAGE_SHIFT_4K);
|
|
|
iommu_init_table(tbl, hose->node);
|
|
|
iommu_register_group(tbl, pci_domain_nr(hose->bus), 0);
|
|
|
|