| /linux/drivers/iommu/ |
| H A D | iova.c | 22 static bool iova_rcache_insert(struct iova_domain *iovad, 25 static unsigned long iova_rcache_get(struct iova_domain *iovad, 28 static void free_iova_rcaches(struct iova_domain *iovad); 29 static void free_cpu_cached_iovas(unsigned int cpu, struct iova_domain *iovad); 30 static void free_global_cached_iovas(struct iova_domain *iovad); 38 init_iova_domain(struct iova_domain *iovad, unsigned long granule, in init_iova_domain() argument 48 spin_lock_init(&iovad->iova_rbtree_lock); in init_iova_domain() 49 iovad->rbroot = RB_ROOT; in init_iova_domain() 50 iovad->cached_node = &iovad->anchor.node; in init_iova_domain() 51 iovad->cached32_node = &iovad->anchor.node; in init_iova_domain() [all …]
|
| H A D | dma-iommu.c | 58 struct iova_domain iovad; member 154 free_iova_fast(&cookie->iovad, in fq_ring_free_locked() 428 if (cookie->iovad.granule) { in iommu_put_dma_cookie() 430 put_iova_domain(&cookie->iovad); in iommu_put_dma_cookie() 475 struct iova_domain *iovad = &cookie->iovad; in cookie_init_hw_msi_region() local 479 start -= iova_offset(iovad, start); in cookie_init_hw_msi_region() 480 num_pages = iova_align(iovad, end - start) >> iova_shift(iovad); in cookie_init_hw_msi_region() 491 start += iovad->granule; in cookie_init_hw_msi_region() 507 struct iova_domain *iovad) in iova_reserve_pci_windows() argument 518 lo = iova_pfn(iovad, window->res->start - window->offset); in iova_reserve_pci_windows() [all …]
|
| /linux/drivers/vdpa/vdpa_user/ |
| H A D | iova_domain.c | 406 vduse_domain_alloc_iova(struct iova_domain *iovad, in vduse_domain_alloc_iova() argument 409 unsigned long shift = iova_shift(iovad); in vduse_domain_alloc_iova() 410 unsigned long iova_len = iova_align(iovad, size) >> shift; in vduse_domain_alloc_iova() 413 iova_pfn = alloc_iova_fast(iovad, iova_len, limit >> shift, true); in vduse_domain_alloc_iova() 418 static void vduse_domain_free_iova(struct iova_domain *iovad, in vduse_domain_free_iova() argument 421 unsigned long shift = iova_shift(iovad); in vduse_domain_free_iova() 422 unsigned long iova_len = iova_align(iovad, size) >> shift; in vduse_domain_free_iova() 424 free_iova_fast(iovad, iova >> shift, iova_len); in vduse_domain_free_iova() 452 struct iova_domain *iovad = &domain->stream_iovad; in vduse_domain_map_page() local 455 dma_addr_t iova = vduse_domain_alloc_iova(iovad, size, limit); in vduse_domain_map_page() [all …]
|
| /linux/drivers/staging/media/ipu7/ |
| H A D | ipu7-dma.c | 174 iova = alloc_iova(&mmu->dmap->iovad, count, in ipu7_dma_alloc() 236 __free_iova(&mmu->dmap->iovad, iova); in ipu7_dma_alloc() 249 struct iova *iova = find_iova(&mmu->dmap->iovad, PHYS_PFN(dma_handle)); in ipu7_dma_free() 291 __free_iova(&mmu->dmap->iovad, iova); in ipu7_dma_free() 336 struct iova *iova = find_iova(&mmu->dmap->iovad, in ipu7_dma_unmap_sg() 370 __free_iova(&mmu->dmap->iovad, iova); in ipu7_dma_unmap_sg() 407 lo = iova_pfn(&mmu->dmap->iovad, IPU_FW_CODE_REGION_START); in ipu7_dma_map_sg() 408 hi = iova_pfn(&mmu->dmap->iovad, IPU_FW_CODE_REGION_END) - 1U; in ipu7_dma_map_sg() 409 iova = reserve_iova(&mmu->dmap->iovad, lo, hi); in ipu7_dma_map_sg() 416 iova = alloc_iova(&mmu->dmap->iovad, npages, in ipu7_dma_map_sg()
|
| H A D | ipu7-mmu.c | 407 iova = alloc_iova(&mmu->dmap->iovad, n_pages, in allocate_trash_buffer() 452 __free_iova(&mmu->dmap->iovad, iova); in allocate_trash_buffer() 670 init_iova_domain(&dmap->iovad, SZ_4K, base_pfn); in alloc_dma_mapping() 758 iova = find_iova(&dmap->iovad, PHYS_PFN(mmu->iova_trash_page)); in ipu7_mmu_destroy() 763 __free_iova(&dmap->iovad, iova); in ipu7_mmu_destroy() 851 put_iova_domain(&dmap->iovad); in ipu7_mmu_cleanup()
|
| /linux/drivers/media/pci/intel/ipu6/ |
| H A D | ipu6-dma.c | 174 iova = alloc_iova(&mmu->dmap->iovad, count, in ipu6_dma_alloc() 236 __free_iova(&mmu->dmap->iovad, iova); in ipu6_dma_alloc() 249 struct iova *iova = find_iova(&mmu->dmap->iovad, PHYS_PFN(dma_handle)); in ipu6_dma_free() 291 __free_iova(&mmu->dmap->iovad, iova); in ipu6_dma_free() 336 struct iova *iova = find_iova(&mmu->dmap->iovad, in ipu6_dma_unmap_sg() 370 __free_iova(&mmu->dmap->iovad, iova); in ipu6_dma_unmap_sg() 400 iova = alloc_iova(&mmu->dmap->iovad, npages, in ipu6_dma_map_sg()
|
| H A D | ipu6-mmu.c | 424 iova = alloc_iova(&mmu->dmap->iovad, n_pages, in allocate_trash_buffer() 469 __free_iova(&mmu->dmap->iovad, iova); in allocate_trash_buffer() 626 init_iova_domain(&dmap->iovad, SZ_4K, 1); in alloc_dma_mapping() 713 iova = find_iova(&dmap->iovad, PHYS_PFN(mmu->iova_trash_page)); in ipu6_mmu_destroy() 718 __free_iova(&dmap->iovad, iova); in ipu6_mmu_destroy() 804 put_iova_domain(&dmap->iovad); in ipu6_mmu_cleanup()
|