Lines Matching refs:iova

2331 phys_addr_t iommu_iova_to_phys(struct iommu_domain *domain, dma_addr_t iova)
2336 return domain->ops->iova_to_phys(domain, iova);
2372 static int __iommu_map(struct iommu_domain *domain, unsigned long iova,
2376 unsigned long orig_iova = iova;
2397 if (!IS_ALIGNED(iova | paddr | size, min_pagesz)) {
2398 pr_err("unaligned: iova 0x%lx pa %pa size 0x%zx min_pagesz 0x%x\n",
2399 iova, &paddr, size, min_pagesz);
2403 pr_debug("map: iova 0x%lx pa %pa size 0x%zx\n", iova, &paddr, size);
2406 size_t pgsize = iommu_pgsize(domain, iova | paddr, size);
2408 pr_debug("mapping: iova 0x%lx pa %pa pgsize 0x%zx\n",
2409 iova, &paddr, pgsize);
2410 ret = ops->map(domain, iova, paddr, pgsize, prot, gfp);
2415 iova += pgsize;
2429 static int _iommu_map(struct iommu_domain *domain, unsigned long iova,
2435 ret = __iommu_map(domain, iova, paddr, size, prot, gfp);
2442 int iommu_map(struct iommu_domain *domain, unsigned long iova,
2446 return _iommu_map(domain, iova, paddr, size, prot, GFP_KERNEL);
2450 int iommu_map_atomic(struct iommu_domain *domain, unsigned long iova,
2453 return _iommu_map(domain, iova, paddr, size, prot, GFP_ATOMIC);
2458 unsigned long iova, size_t size,
2463 unsigned long orig_iova = iova;
2481 if (!IS_ALIGNED(iova | size, min_pagesz)) {
2482 pr_err("unaligned: iova 0x%lx size 0x%zx min_pagesz 0x%x\n",
2483 iova, size, min_pagesz);
2487 pr_debug("unmap this: iova 0x%lx size 0x%zx\n", iova, size);
2494 size_t pgsize = iommu_pgsize(domain, iova, size - unmapped);
2496 unmapped_page = ops->unmap(domain, iova, pgsize, iotlb_gather);
2500 pr_debug("unmapped: iova 0x%lx size 0x%zx\n",
2501 iova, unmapped_page);
2503 iova += unmapped_page;
2512 unsigned long iova, size_t size)
2518 ret = __iommu_unmap(domain, iova, size, &iotlb_gather);
2526 unsigned long iova, size_t size,
2529 return __iommu_unmap(domain, iova, size, iotlb_gather);
2533 static size_t __iommu_map_sg(struct iommu_domain *domain, unsigned long iova,
2547 ret = __iommu_map(domain, iova + mapped, start,
2574 iommu_unmap(domain, iova, mapped);
2580 size_t iommu_map_sg(struct iommu_domain *domain, unsigned long iova,
2584 return __iommu_map_sg(domain, iova, sg, nents, prot, GFP_KERNEL);
2588 size_t iommu_map_sg_atomic(struct iommu_domain *domain, unsigned long iova,
2591 return __iommu_map_sg(domain, iova, sg, nents, prot, GFP_ATOMIC);
2619 * @iova: the faulting address
2640 unsigned long iova, int flags)
2649 ret = domain->handler(domain, dev, iova, flags,
2652 trace_io_page_fault(dev, iova, flags);