powerpc/iommu: Add ppc_md.tce_get() callback for use by VFIO
authorAlexey Kardashevskiy <aik@ozlabs.ru>
Tue, 4 Sep 2012 15:19:35 +0000 (15:19 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Mon, 10 Sep 2012 04:36:17 +0000 (14:36 +1000)
The upcoming VFIO support requires a way to know which
entry in the TCE map is not empty in order to do cleanup
at QEMU exit/crash. This patch adds such functionality
to POWERNV platform code.

Signed-off-by: Alexey Kardashevskiy <aik@ozlabs.ru>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/platforms/powernv/pci.c

index 1e908aef4201edb20c4f774979d076ebca5b858b..c01688a1a741f40ff423fe40761d2fd783a46799 100644 (file)
@@ -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);