Lines Matching refs:iova
59 struct interval_tree_node iova; member
313 static int viommu_add_mapping(struct viommu_domain *vdomain, unsigned long iova, in viommu_add_mapping() argument
324 mapping->iova.start = iova; in viommu_add_mapping()
325 mapping->iova.last = iova + size - 1; in viommu_add_mapping()
329 interval_tree_insert(&mapping->iova, &vdomain->mappings); in viommu_add_mapping()
346 unsigned long iova, size_t size) in viommu_del_mappings() argument
350 unsigned long last = iova + size - 1; in viommu_del_mappings()
355 next = interval_tree_iter_first(&vdomain->mappings, iova, last); in viommu_del_mappings()
358 mapping = container_of(node, struct viommu_mapping, iova); in viommu_del_mappings()
359 next = interval_tree_iter_next(node, iova, last); in viommu_del_mappings()
362 if (mapping->iova.start < iova) in viommu_del_mappings()
369 unmapped += mapping->iova.last - mapping->iova.start + 1; in viommu_del_mappings()
397 mapping = container_of(node, struct viommu_mapping, iova); in viommu_replay_mappings()
401 .virt_start = cpu_to_le64(mapping->iova.start), in viommu_replay_mappings()
402 .virt_end = cpu_to_le64(mapping->iova.last), in viommu_replay_mappings()
718 static int viommu_map(struct iommu_domain *domain, unsigned long iova, in viommu_map() argument
733 ret = viommu_add_mapping(vdomain, iova, paddr, size, flags); in viommu_map()
740 .virt_start = cpu_to_le64(iova), in viommu_map()
742 .virt_end = cpu_to_le64(iova + size - 1), in viommu_map()
751 viommu_del_mappings(vdomain, iova, size); in viommu_map()
756 static size_t viommu_unmap(struct iommu_domain *domain, unsigned long iova, in viommu_unmap() argument
764 unmapped = viommu_del_mappings(vdomain, iova, size); in viommu_unmap()
775 .virt_start = cpu_to_le64(iova), in viommu_unmap()
776 .virt_end = cpu_to_le64(iova + unmapped - 1), in viommu_unmap()
784 dma_addr_t iova) in viommu_iova_to_phys() argument
793 node = interval_tree_iter_first(&vdomain->mappings, iova, iova); in viommu_iova_to_phys()
795 mapping = container_of(node, struct viommu_mapping, iova); in viommu_iova_to_phys()
796 paddr = mapping->paddr + (iova - mapping->iova.start); in viommu_iova_to_phys()