Lines Matching refs:iommu
136 struct iommu *iommu; in dma_4v_alloc_coherent() local
157 iommu = dev->archdata.iommu; in dma_4v_alloc_coherent()
159 entry = iommu_tbl_range_alloc(dev, &iommu->tbl, npages, NULL, in dma_4v_alloc_coherent()
165 *dma_addrp = (iommu->tbl.table_map_base + (entry << IO_PAGE_SHIFT)); in dma_4v_alloc_coherent()
190 iommu_tbl_range_free(&iommu->tbl, *dma_addrp, npages, IOMMU_ERROR_CODE); in dma_4v_alloc_coherent()
219 struct iommu *iommu; in dma_4v_free_coherent() local
224 iommu = dev->archdata.iommu; in dma_4v_free_coherent()
227 entry = ((dvma - iommu->tbl.table_map_base) >> IO_PAGE_SHIFT); in dma_4v_free_coherent()
229 iommu_tbl_range_free(&iommu->tbl, dvma, npages, IOMMU_ERROR_CODE); in dma_4v_free_coherent()
240 struct iommu *iommu; in dma_4v_map_page() local
247 iommu = dev->archdata.iommu; in dma_4v_map_page()
256 entry = iommu_tbl_range_alloc(dev, &iommu->tbl, npages, NULL, in dma_4v_map_page()
262 bus_addr = (iommu->tbl.table_map_base + (entry << IO_PAGE_SHIFT)); in dma_4v_map_page()
291 iommu_tbl_range_free(&iommu->tbl, bus_addr, npages, IOMMU_ERROR_CODE); in dma_4v_map_page()
300 struct iommu *iommu; in dma_4v_unmap_page() local
311 iommu = dev->archdata.iommu; in dma_4v_unmap_page()
318 entry = (bus_addr - iommu->tbl.table_map_base) >> IO_PAGE_SHIFT; in dma_4v_unmap_page()
320 iommu_tbl_range_free(&iommu->tbl, bus_addr, npages, IOMMU_ERROR_CODE); in dma_4v_unmap_page()
333 struct iommu *iommu; in dma_4v_map_sg() local
339 iommu = dev->archdata.iommu; in dma_4v_map_sg()
340 if (nelems == 0 || !iommu) in dma_4v_map_sg()
362 base_shift = iommu->tbl.table_map_base >> IO_PAGE_SHIFT; in dma_4v_map_sg()
375 entry = iommu_tbl_range_alloc(dev, &iommu->tbl, npages, in dma_4v_map_sg()
382 " npages %lx\n", iommu, paddr, npages); in dma_4v_map_sg()
389 dma_addr = iommu->tbl.table_map_base + (entry << IO_PAGE_SHIFT); in dma_4v_map_sg()
453 iommu_tbl_range_free(&iommu->tbl, vaddr, npages, in dma_4v_map_sg()
473 struct iommu *iommu; in dma_4v_unmap_sg() local
479 iommu = dev->archdata.iommu; in dma_4v_unmap_sg()
490 struct iommu_map_table *tbl = &iommu->tbl; in dma_4v_unmap_sg()
498 iommu_tbl_range_free(&iommu->tbl, dma_handle, npages, in dma_4v_unmap_sg()
529 struct iommu_map_table *iommu) in probe_existing_entries() argument
536 for (pool_nr = 0; pool_nr < iommu->nr_pools; pool_nr++) { in probe_existing_entries()
537 pool = &(iommu->pools[pool_nr]); in probe_existing_entries()
551 __set_bit(i, iommu->map); in probe_existing_entries()
562 struct iommu *iommu = pbm->iommu; in pci_sun4v_iommu_init() local
583 spin_lock_init(&iommu->lock); in pci_sun4v_iommu_init()
584 iommu->ctx_lowest_free = 1; in pci_sun4v_iommu_init()
585 iommu->tbl.table_map_base = dma_offset; in pci_sun4v_iommu_init()
586 iommu->dma_addr_mask = dma_mask; in pci_sun4v_iommu_init()
591 iommu->tbl.map = kzalloc(sz, GFP_KERNEL); in pci_sun4v_iommu_init()
592 if (!iommu->tbl.map) { in pci_sun4v_iommu_init()
596 iommu_tbl_pool_init(&iommu->tbl, num_tsb_entries, IO_PAGE_SHIFT, in pci_sun4v_iommu_init()
600 sz = probe_existing_entries(pbm, &iommu->tbl); in pci_sun4v_iommu_init()
908 struct iommu *iommu; in pci_sun4v_probe() local
957 iommu = kzalloc(sizeof(struct iommu), GFP_KERNEL); in pci_sun4v_probe()
958 if (!iommu) { in pci_sun4v_probe()
963 pbm->iommu = iommu; in pci_sun4v_probe()
974 kfree(pbm->iommu); in pci_sun4v_probe()