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()
161 dma_addr_t iova, size_t size, in vduse_domain_bounce() argument
169 if (iova >= domain->bounce_size) in vduse_domain_bounce()
173 map = &domain->bounce_maps[iova >> PAGE_SHIFT]; in vduse_domain_bounce()
174 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()
368 dma_addr_t iova, size_t size) in vduse_domain_free_iova() argument
373 free_iova_fast(iovad, iova >> shift, iova_len); in vduse_domain_free_iova()
384 dma_addr_t iova = vduse_domain_alloc_iova(iovad, size, limit); in vduse_domain_map_page() local
386 if (!iova) in vduse_domain_map_page()
393 if (vduse_domain_map_bounce_page(domain, (u64)iova, (u64)size, pa)) in vduse_domain_map_page()
397 vduse_domain_bounce(domain, iova, size, DMA_TO_DEVICE); in vduse_domain_map_page()
401 return iova; in vduse_domain_map_page()
405 vduse_domain_free_iova(iovad, iova, size); in vduse_domain_map_page()
430 dma_addr_t iova = vduse_domain_alloc_iova(iovad, size, limit); in vduse_domain_alloc_coherent() local
433 if (!iova || !orig) in vduse_domain_alloc_coherent()
437 if (vduse_iotlb_add_range(domain, (u64)iova, (u64)iova + size - 1, in vduse_domain_alloc_coherent()
439 domain->file, (u64)iova)) { in vduse_domain_alloc_coherent()
445 *dma_addr = iova; in vduse_domain_alloc_coherent()
452 if (iova) in vduse_domain_alloc_coherent()
453 vduse_domain_free_iova(iovad, iova, size); in vduse_domain_alloc_coherent()
488 unsigned long iova = vmf->pgoff << PAGE_SHIFT; in vduse_domain_mmap_fault() local
494 if (iova < domain->bounce_size) in vduse_domain_mmap_fault()
495 page = vduse_domain_get_bounce_page(domain, iova); in vduse_domain_mmap_fault()
497 page = vduse_domain_get_coherent_page(domain, iova); in vduse_domain_mmap_fault()