|
@@ -446,6 +446,11 @@ static void pnv_tce_free(struct iommu_table *tbl, long index, long npages)
|
|
|
pnv_tce_invalidate(tbl, tces, tcep - 1);
|
|
|
}
|
|
|
|
|
|
+static unsigned long pnv_tce_get(struct iommu_table *tbl, long index)
|
|
|
+{
|
|
|
+ return ((u64 *)tbl->it_base)[index - tbl->it_offset];
|
|
|
+}
|
|
|
+
|
|
|
void pnv_pci_setup_iommu_table(struct iommu_table *tbl,
|
|
|
void *tce_mem, u64 tce_size,
|
|
|
u64 dma_offset)
|
|
@@ -596,6 +601,7 @@ void __init pnv_pci_init(void)
|
|
|
ppc_md.pci_dma_dev_setup = pnv_pci_dma_dev_setup;
|
|
|
ppc_md.tce_build = pnv_tce_build;
|
|
|
ppc_md.tce_free = pnv_tce_free;
|
|
|
+ ppc_md.tce_get = pnv_tce_get;
|
|
|
ppc_md.pci_probe_mode = pnv_pci_probe_mode;
|
|
|
set_pci_dma_ops(&dma_iommu_ops);
|
|
|
|