Lines Matching refs:iommu

77 static inline bool iommu_use_atu(struct iommu *iommu, u64 mask)  in iommu_use_atu()  argument
79 return iommu->atu && mask > DMA_BIT_MASK(32); in iommu_use_atu()
101 if (!iommu_use_atu(pbm->iommu, mask)) { in iommu_batch_flush()
118 iotsb_num = pbm->iommu->atu->iotsb->iotsb_num; in iommu_batch_flush()
187 struct iommu *iommu; in dma_4v_alloc_coherent() local
212 iommu = dev->archdata.iommu; in dma_4v_alloc_coherent()
214 if (!iommu_use_atu(iommu, mask)) in dma_4v_alloc_coherent()
215 tbl = &iommu->tbl; in dma_4v_alloc_coherent()
217 tbl = &iommu->atu->tbl; in dma_4v_alloc_coherent()
326 struct iommu *iommu; in dma_4v_free_coherent() local
334 iommu = dev->archdata.iommu; in dma_4v_free_coherent()
336 atu = iommu->atu; in dma_4v_free_coherent()
339 if (!iommu_use_atu(iommu, dvma)) { in dma_4v_free_coherent()
340 tbl = &iommu->tbl; in dma_4v_free_coherent()
359 struct iommu *iommu; in dma_4v_map_page() local
369 iommu = dev->archdata.iommu; in dma_4v_map_page()
370 atu = iommu->atu; in dma_4v_map_page()
380 if (!iommu_use_atu(iommu, mask)) in dma_4v_map_page()
381 tbl = &iommu->tbl; in dma_4v_map_page()
433 struct iommu *iommu; in dma_4v_unmap_page() local
447 iommu = dev->archdata.iommu; in dma_4v_unmap_page()
449 atu = iommu->atu; in dma_4v_unmap_page()
458 tbl = &iommu->tbl; in dma_4v_unmap_page()
478 struct iommu *iommu; in dma_4v_map_sg() local
487 iommu = dev->archdata.iommu; in dma_4v_map_sg()
488 if (nelems == 0 || !iommu) in dma_4v_map_sg()
490 atu = iommu->atu; in dma_4v_map_sg()
515 if (!iommu_use_atu(iommu, mask)) in dma_4v_map_sg()
516 tbl = &iommu->tbl; in dma_4v_map_sg()
629 struct iommu *iommu; in dma_4v_unmap_sg() local
637 iommu = dev->archdata.iommu; in dma_4v_unmap_sg()
639 atu = iommu->atu; in dma_4v_unmap_sg()
658 tbl = &iommu->tbl; in dma_4v_unmap_sg()
676 struct iommu *iommu = dev->archdata.iommu; in dma_4v_supported() local
680 if (device_mask < iommu->dma_addr_mask) in dma_4v_supported()
709 struct iommu_map_table *iommu) in probe_existing_entries() argument
716 for (pool_nr = 0; pool_nr < iommu->nr_pools; pool_nr++) { in probe_existing_entries()
717 pool = &(iommu->pools[pool_nr]); in probe_existing_entries()
731 __set_bit(i, iommu->map); in probe_existing_entries()
741 struct atu *atu = pbm->iommu->atu; in pci_sun4v_atu_alloc_iotsb()
802 struct atu *atu = pbm->iommu->atu; in pci_sun4v_atu_init()
868 struct iommu *iommu = pbm->iommu; in pci_sun4v_iommu_init() local
889 spin_lock_init(&iommu->lock); in pci_sun4v_iommu_init()
890 iommu->ctx_lowest_free = 1; in pci_sun4v_iommu_init()
891 iommu->tbl.table_map_base = dma_offset; in pci_sun4v_iommu_init()
892 iommu->dma_addr_mask = dma_mask; in pci_sun4v_iommu_init()
897 iommu->tbl.map = kzalloc(sz, GFP_KERNEL); in pci_sun4v_iommu_init()
898 if (!iommu->tbl.map) { in pci_sun4v_iommu_init()
902 iommu_tbl_pool_init(&iommu->tbl, num_tsb_entries, IO_PAGE_SHIFT, in pci_sun4v_iommu_init()
906 sz = probe_existing_entries(pbm, &iommu->tbl); in pci_sun4v_iommu_init()
1205 if (pbm->iommu->atu) { in pci_sun4v_pbm_init()
1208 kfree(pbm->iommu->atu); in pci_sun4v_pbm_init()
1209 pbm->iommu->atu = NULL; in pci_sun4v_pbm_init()
1226 struct iommu *iommu; in pci_sun4v_probe() local
1293 iommu = kzalloc(sizeof(struct iommu), GFP_KERNEL); in pci_sun4v_probe()
1294 if (!iommu) { in pci_sun4v_probe()
1299 pbm->iommu = iommu; in pci_sun4v_probe()
1300 iommu->atu = NULL; in pci_sun4v_probe()
1306 iommu->atu = atu; in pci_sun4v_probe()
1318 kfree(iommu->atu); in pci_sun4v_probe()
1319 kfree(pbm->iommu); in pci_sun4v_probe()