Lines Matching defs:iova

58 	struct interval_tree_node	iova;
313 static int viommu_add_mapping(struct viommu_domain *vdomain, u64 iova, u64 end,
324 mapping->iova.start = iova;
325 mapping->iova.last = end;
329 interval_tree_insert(&mapping->iova, &vdomain->mappings);
339 * @iova: start of the range
345 u64 iova, u64 end)
353 next = interval_tree_iter_first(&vdomain->mappings, iova, end);
356 mapping = container_of(node, struct viommu_mapping, iova);
357 next = interval_tree_iter_next(node, iova, end);
360 if (mapping->iova.start < iova)
367 unmapped += mapping->iova.last - mapping->iova.start + 1;
386 u64 iova = vdomain->domain.geometry.aperture_start;
391 iova = ALIGN(iova, granule);
398 if (resv_end < iova || resv_start > limit)
402 if (resv_start > iova) {
403 ret = viommu_add_mapping(vdomain, iova, resv_start - 1,
404 (phys_addr_t)iova, flags);
412 iova = resv_end + 1;
415 ret = viommu_add_mapping(vdomain, iova, limit, (phys_addr_t)iova,
422 viommu_del_mappings(vdomain, 0, iova);
444 mapping = container_of(node, struct viommu_mapping, iova);
448 .virt_start = cpu_to_le64(mapping->iova.start),
449 .virt_end = cpu_to_le64(mapping->iova.last),
814 static int viommu_map_pages(struct iommu_domain *domain, unsigned long iova,
821 u64 end = iova + size - 1;
832 ret = viommu_add_mapping(vdomain, iova, end, paddr, flags);
840 .virt_start = cpu_to_le64(iova),
848 viommu_del_mappings(vdomain, iova, end);
858 static size_t viommu_unmap_pages(struct iommu_domain *domain, unsigned long iova,
868 unmapped = viommu_del_mappings(vdomain, iova, iova + size - 1);
879 .virt_start = cpu_to_le64(iova),
880 .virt_end = cpu_to_le64(iova + unmapped - 1),
888 dma_addr_t iova)
897 node = interval_tree_iter_first(&vdomain->mappings, iova, iova);
899 mapping = container_of(node, struct viommu_mapping, iova);
900 paddr = mapping->paddr + (iova - mapping->iova.start);
916 unsigned long iova, size_t size)