Lines Matching refs:paddr
2398 static size_t iommu_pgsize(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size,
2404 unsigned long addr_merge = paddr | iova;
2430 if ((iova ^ paddr) & (pgsize_next - 1)) {
2448 static int iommu_map_pages_ext(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size,
2455 pgsize = iommu_pgsize(domain, iova, paddr, size, &count);
2457 pr_debug("mapping: iova 0x%lx pa %pa pgsize 0x%zx count %zu\n", iova, &paddr, pgsize, count);
2460 ret = ops->map_pages(domain, iova, paddr, pgsize, count, prot, gfp, mapped);
2462 ret = ops->map(domain, iova, paddr, pgsize, prot, gfp);
2469 static int iommu_map_ext(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot,
2476 phys_addr_t orig_paddr = paddr;
2494 if (!IS_ALIGNED(iova | paddr | size, min_pagesz)) {
2495 pr_err("unaligned: iova 0x%lx pa %pa size 0x%zx min_pagesz 0x%x\n", iova, &paddr, size, min_pagesz);
2499 pr_debug("map: iova 0x%lx pa %pa size 0x%zx\n", iova, &paddr, size);
2504 ret = iommu_map_pages_ext(domain, iova, paddr, size, prot, gfp, &mapped);
2516 paddr += mapped;
2529 static int _iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot,
2535 ret = iommu_map_ext(domain, iova, paddr, size, prot, gfp);
2543 int iommu_map(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot)
2546 return _iommu_map(domain, iova, paddr, size, prot, GFP_KERNEL);
2550 int iommu_map_atomic(struct iommu_domain *domain, unsigned long iova, phys_addr_t paddr, size_t size, int prot)
2552 return _iommu_map(domain, iova, paddr, size, prot, GFP_ATOMIC);
2717 int iommu_domain_window_enable(struct iommu_domain *domain, u32 wnd_nr, phys_addr_t paddr, u64 size, int prot)
2723 return domain->ops->domain_window_enable(domain, wnd_nr, paddr, size, prot);