Lines Matching refs:pages

23 	struct iopt_pages *pages;  member
42 if (!iter->area->pages) { in iopt_area_contig_init()
65 !iter->area->pages) { in iopt_area_contig_next()
198 struct iopt_pages *pages, unsigned long iova, in iopt_insert_area() argument
204 if ((iommu_prot & IOMMU_WRITE) && !pages->writable) in iopt_insert_area()
220 if (WARN_ON(area->pages_node.last >= pages->npages)) in iopt_insert_area()
271 (uintptr_t)elm->pages->uptr + elm->start_byte, length); in iopt_alloc_area_pages()
291 rc = iopt_insert_area(iopt, elm->area, elm->pages, iova, in iopt_alloc_area_pages()
306 WARN_ON(area->pages); in iopt_abort_area()
323 if (elm->pages) in iopt_free_pages_list()
324 iopt_put_pages(elm->pages); in iopt_free_pages_list()
337 rc = iopt_area_fill_domains(elm->area, elm->pages); in iopt_fill_domains_pages()
347 iopt_area_unfill_domains(undo_elm->area, undo_elm->pages); in iopt_fill_domains_pages()
376 elm->area->pages = elm->pages; in iopt_map_pages()
377 elm->pages = NULL; in iopt_map_pages()
414 elm.pages = iopt_alloc_pages(uptr, length, iommu_prot & IOMMU_WRITE); in iopt_map_user_pages()
415 if (IS_ERR(elm.pages)) in iopt_map_user_pages()
416 return PTR_ERR(elm.pages); in iopt_map_user_pages()
418 elm.pages->account_mode == IOPT_PAGES_ACCOUNT_USER) in iopt_map_user_pages()
419 elm.pages->account_mode = IOPT_PAGES_ACCOUNT_MM; in iopt_map_user_pages()
420 elm.start_byte = uptr - elm.pages->uptr; in iopt_map_user_pages()
428 if (elm.pages) in iopt_map_user_pages()
429 iopt_put_pages(elm.pages); in iopt_map_user_pages()
459 elm->pages = area->pages; in iopt_get_pages()
461 kref_get(&elm->pages->kref); in iopt_get_pages()
495 struct iopt_pages *pages; in iopt_unmap_iova_range() local
498 if (!area->pages) { in iopt_unmap_iova_range()
532 pages = area->pages; in iopt_unmap_iova_range()
533 area->pages = NULL; in iopt_unmap_iova_range()
536 iopt_area_unfill_domains(area, pages); in iopt_unmap_iova_range()
538 iopt_put_pages(pages); in iopt_unmap_iova_range()
723 struct iopt_pages *pages = area->pages; in iopt_unfill_domain() local
725 if (!pages) in iopt_unfill_domain()
728 mutex_lock(&pages->mutex); in iopt_unfill_domain()
733 mutex_unlock(&pages->mutex); in iopt_unfill_domain()
742 struct iopt_pages *pages = area->pages; in iopt_unfill_domain() local
744 if (!pages) in iopt_unfill_domain()
747 mutex_lock(&pages->mutex); in iopt_unfill_domain()
748 interval_tree_remove(&area->pages_node, &pages->domains_itree); in iopt_unfill_domain()
751 iopt_area_unfill_domain(area, pages, domain); in iopt_unfill_domain()
752 mutex_unlock(&pages->mutex); in iopt_unfill_domain()
776 struct iopt_pages *pages = area->pages; in iopt_fill_domain() local
778 if (!pages) in iopt_fill_domain()
781 mutex_lock(&pages->mutex); in iopt_fill_domain()
784 mutex_unlock(&pages->mutex); in iopt_fill_domain()
791 &pages->domains_itree); in iopt_fill_domain()
793 mutex_unlock(&pages->mutex); in iopt_fill_domain()
801 struct iopt_pages *pages = area->pages; in iopt_fill_domain() local
805 if (!pages) in iopt_fill_domain()
807 mutex_lock(&pages->mutex); in iopt_fill_domain()
810 &pages->domains_itree); in iopt_fill_domain()
813 iopt_area_unfill_domain(area, pages, domain); in iopt_fill_domain()
814 mutex_unlock(&pages->mutex); in iopt_fill_domain()
1011 struct iopt_pages *pages = area->pages; in iopt_area_split() local
1021 if (!pages || area->prevent_access) in iopt_area_split()
1038 mutex_lock(&pages->mutex); in iopt_area_split()
1058 rc = iopt_insert_area(iopt, lhs, area->pages, start_iova, in iopt_area_split()
1065 rc = iopt_insert_area(iopt, rhs, area->pages, new_start, in iopt_area_split()
1076 interval_tree_remove(&area->pages_node, &pages->domains_itree); in iopt_area_split()
1077 interval_tree_insert(&lhs->pages_node, &pages->domains_itree); in iopt_area_split()
1078 interval_tree_insert(&rhs->pages_node, &pages->domains_itree); in iopt_area_split()
1082 lhs->pages = area->pages; in iopt_area_split()
1084 rhs->pages = area->pages; in iopt_area_split()
1085 kref_get(&rhs->pages->kref); in iopt_area_split()
1087 mutex_unlock(&pages->mutex); in iopt_area_split()
1100 mutex_unlock(&pages->mutex); in iopt_area_split()