|
@@ -486,9 +486,10 @@ static void iommu_table_setparms(struct pci_controller *phb,
|
|
|
memset((void *)tbl->it_base, 0, *sizep);
|
|
|
|
|
|
tbl->it_busno = phb->bus->number;
|
|
|
+ tbl->it_page_shift = IOMMU_PAGE_SHIFT_4K;
|
|
|
|
|
|
/* Units of tce entries */
|
|
|
- tbl->it_offset = phb->dma_window_base_cur >> IOMMU_PAGE_SHIFT_4K;
|
|
|
+ tbl->it_offset = phb->dma_window_base_cur >> tbl->it_page_shift;
|
|
|
|
|
|
/* Test if we are going over 2GB of DMA space */
|
|
|
if (phb->dma_window_base_cur + phb->dma_window_size > 0x80000000ul) {
|
|
@@ -499,7 +500,7 @@ static void iommu_table_setparms(struct pci_controller *phb,
|
|
|
phb->dma_window_base_cur += phb->dma_window_size;
|
|
|
|
|
|
/* Set the tce table size - measured in entries */
|
|
|
- tbl->it_size = phb->dma_window_size >> IOMMU_PAGE_SHIFT_4K;
|
|
|
+ tbl->it_size = phb->dma_window_size >> tbl->it_page_shift;
|
|
|
|
|
|
tbl->it_index = 0;
|
|
|
tbl->it_blocksize = 16;
|
|
@@ -537,11 +538,12 @@ static void iommu_table_setparms_lpar(struct pci_controller *phb,
|
|
|
of_parse_dma_window(dn, dma_window, &tbl->it_index, &offset, &size);
|
|
|
|
|
|
tbl->it_busno = phb->bus->number;
|
|
|
+ tbl->it_page_shift = IOMMU_PAGE_SHIFT_4K;
|
|
|
tbl->it_base = 0;
|
|
|
tbl->it_blocksize = 16;
|
|
|
tbl->it_type = TCE_PCI;
|
|
|
- tbl->it_offset = offset >> IOMMU_PAGE_SHIFT_4K;
|
|
|
- tbl->it_size = size >> IOMMU_PAGE_SHIFT_4K;
|
|
|
+ tbl->it_offset = offset >> tbl->it_page_shift;
|
|
|
+ tbl->it_size = size >> tbl->it_page_shift;
|
|
|
}
|
|
|
|
|
|
static void pci_dma_bus_setup_pSeries(struct pci_bus *bus)
|