Lines Matching refs:iova
104 u64 iova, u64 size, u64 paddr) in vduse_domain_map_bounce_page() argument
107 u64 last = iova + size - 1; in vduse_domain_map_bounce_page()
109 while (iova <= last) { in vduse_domain_map_bounce_page()
110 map = &domain->bounce_maps[iova >> PAGE_SHIFT]; in vduse_domain_map_bounce_page()
118 iova += PAGE_SIZE; in vduse_domain_map_bounce_page()
124 u64 iova, u64 size) in vduse_domain_unmap_bounce_page() argument
127 u64 last = iova + size - 1; in vduse_domain_unmap_bounce_page()
129 while (iova <= last) { in vduse_domain_unmap_bounce_page()
130 map = &domain->bounce_maps[iova >> PAGE_SHIFT]; in vduse_domain_unmap_bounce_page()
132 iova += PAGE_SIZE; in vduse_domain_unmap_bounce_page()
162 dma_addr_t iova, size_t size, in vduse_domain_bounce() argument
170 if (iova >= domain->bounce_size) in vduse_domain_bounce()
174 map = &domain->bounce_maps[iova >> PAGE_SHIFT]; in vduse_domain_bounce()
175 offset = offset_in_page(iova); in vduse_domain_bounce()
185 iova += sz; in vduse_domain_bounce()
190 vduse_domain_get_coherent_page(struct vduse_iova_domain *domain, u64 iova) in vduse_domain_get_coherent_page() argument
192 u64 start = iova & PAGE_MASK; in vduse_domain_get_coherent_page()
202 page = pfn_to_page((map->addr + iova - map->start) >> PAGE_SHIFT); in vduse_domain_get_coherent_page()
211 vduse_domain_get_bounce_page(struct vduse_iova_domain *domain, u64 iova) in vduse_domain_get_bounce_page() argument
217 map = &domain->bounce_maps[iova >> PAGE_SHIFT]; in vduse_domain_get_bounce_page()
309 dma_addr_t iova, size_t size) in vduse_domain_free_iova() argument
314 free_iova_fast(iovad, iova >> shift, iova_len); in vduse_domain_free_iova()
325 dma_addr_t iova = vduse_domain_alloc_iova(iovad, size, limit); in vduse_domain_map_page() local
327 if (!iova) in vduse_domain_map_page()
333 if (vduse_domain_map_bounce_page(domain, (u64)iova, (u64)size, pa)) in vduse_domain_map_page()
337 vduse_domain_bounce(domain, iova, size, DMA_TO_DEVICE); in vduse_domain_map_page()
339 return iova; in vduse_domain_map_page()
341 vduse_domain_free_iova(iovad, iova, size); in vduse_domain_map_page()
364 dma_addr_t iova = vduse_domain_alloc_iova(iovad, size, limit); in vduse_domain_alloc_coherent() local
367 if (!iova || !orig) in vduse_domain_alloc_coherent()
371 if (vduse_iotlb_add_range(domain, (u64)iova, (u64)iova + size - 1, in vduse_domain_alloc_coherent()
373 domain->file, (u64)iova)) { in vduse_domain_alloc_coherent()
379 *dma_addr = iova; in vduse_domain_alloc_coherent()
386 if (iova) in vduse_domain_alloc_coherent()
387 vduse_domain_free_iova(iovad, iova, size); in vduse_domain_alloc_coherent()
422 unsigned long iova = vmf->pgoff << PAGE_SHIFT; in vduse_domain_mmap_fault() local
428 if (iova < domain->bounce_size) in vduse_domain_mmap_fault()
429 page = vduse_domain_get_bounce_page(domain, iova); in vduse_domain_mmap_fault()
431 page = vduse_domain_get_coherent_page(domain, iova); in vduse_domain_mmap_fault()