Lines Matching refs:range

489 		struct drm_gpusvm_range *range, *__next;  in drm_gpusvm_fini()  local
497 drm_gpusvm_for_each_range_safe(range, __next, notifier, 0, in drm_gpusvm_fini()
499 drm_gpusvm_range_remove(gpusvm, range); in drm_gpusvm_fini()
577 struct drm_gpusvm_range *range) in drm_gpusvm_range_insert() argument
583 interval_tree_insert(&range->itree, &notifier->root); in drm_gpusvm_range_insert()
585 node = rb_prev(&range->itree.rb); in drm_gpusvm_range_insert()
591 list_add(&range->entry, head); in drm_gpusvm_range_insert()
603 struct drm_gpusvm_range *range) in __drm_gpusvm_range_remove() argument
605 interval_tree_remove(&range->itree, &notifier->root); in __drm_gpusvm_range_remove()
606 list_del(&range->entry); in __drm_gpusvm_range_remove()
627 struct drm_gpusvm_range *range; in drm_gpusvm_range_alloc() local
630 range = gpusvm->ops->range_alloc(gpusvm); in drm_gpusvm_range_alloc()
632 range = kzalloc_obj(*range); in drm_gpusvm_range_alloc()
634 if (!range) in drm_gpusvm_range_alloc()
637 kref_init(&range->refcount); in drm_gpusvm_range_alloc()
638 range->gpusvm = gpusvm; in drm_gpusvm_range_alloc()
639 range->notifier = notifier; in drm_gpusvm_range_alloc()
640 range->itree.start = ALIGN_DOWN(fault_addr, chunk_size); in drm_gpusvm_range_alloc()
641 range->itree.last = ALIGN(fault_addr + 1, chunk_size) - 1; in drm_gpusvm_range_alloc()
642 INIT_LIST_HEAD(&range->entry); in drm_gpusvm_range_alloc()
643 range->pages.notifier_seq = LONG_MAX; in drm_gpusvm_range_alloc()
644 range->pages.flags.migrate_devmem = migrate_devmem ? 1 : 0; in drm_gpusvm_range_alloc()
646 return range; in drm_gpusvm_range_alloc()
762 enum drm_gpusvm_scan_result drm_gpusvm_scan_mm(struct drm_gpusvm_range *range, in drm_gpusvm_scan_mm() argument
766 struct mmu_interval_notifier *notifier = &range->notifier->notifier; in drm_gpusvm_scan_mm()
767 unsigned long start = drm_gpusvm_range_start(range); in drm_gpusvm_scan_mm()
768 unsigned long end = drm_gpusvm_range_end(range); in drm_gpusvm_scan_mm()
792 mmap_read_lock(range->gpusvm->mm); in drm_gpusvm_scan_mm()
806 mmap_read_unlock(range->gpusvm->mm); in drm_gpusvm_scan_mm()
810 drm_gpusvm_notifier_lock(range->gpusvm); in drm_gpusvm_scan_mm()
812 drm_gpusvm_notifier_unlock(range->gpusvm); in drm_gpusvm_scan_mm()
860 drm_gpusvm_notifier_unlock(range->gpusvm); in drm_gpusvm_scan_mm()
917 struct drm_gpusvm_range *range; in drm_gpusvm_range_chunk_size() local
919 range = drm_gpusvm_range_find(notifier, start, end); in drm_gpusvm_range_chunk_size()
920 if (range) { in drm_gpusvm_range_chunk_size()
1021 struct drm_gpusvm_range *range; in drm_gpusvm_range_find_or_insert() local
1068 range = drm_gpusvm_range_find(notifier, fault_addr, fault_addr + 1); in drm_gpusvm_range_find_or_insert()
1069 if (range) in drm_gpusvm_range_find_or_insert()
1089 range = drm_gpusvm_range_alloc(gpusvm, notifier, fault_addr, chunk_size, in drm_gpusvm_range_find_or_insert()
1091 if (IS_ERR(range)) { in drm_gpusvm_range_find_or_insert()
1092 err = PTR_ERR(range); in drm_gpusvm_range_find_or_insert()
1096 drm_gpusvm_range_insert(notifier, range); in drm_gpusvm_range_find_or_insert()
1104 return range; in drm_gpusvm_range_find_or_insert()
1216 struct drm_gpusvm_range *range) in drm_gpusvm_range_remove() argument
1218 unsigned long npages = npages_in_range(drm_gpusvm_range_start(range), in drm_gpusvm_range_remove()
1219 drm_gpusvm_range_end(range)); in drm_gpusvm_range_remove()
1225 drm_gpusvm_range_start(range), in drm_gpusvm_range_remove()
1226 drm_gpusvm_range_start(range) + 1); in drm_gpusvm_range_remove()
1231 __drm_gpusvm_unmap_pages(gpusvm, &range->pages, npages); in drm_gpusvm_range_remove()
1232 __drm_gpusvm_free_pages(gpusvm, &range->pages); in drm_gpusvm_range_remove()
1233 __drm_gpusvm_range_remove(notifier, range); in drm_gpusvm_range_remove()
1236 drm_gpusvm_range_put(range); in drm_gpusvm_range_remove()
1256 drm_gpusvm_range_get(struct drm_gpusvm_range *range) in drm_gpusvm_range_get() argument
1258 kref_get(&range->refcount); in drm_gpusvm_range_get()
1260 return range; in drm_gpusvm_range_get()
1274 struct drm_gpusvm_range *range = in drm_gpusvm_range_destroy() local
1276 struct drm_gpusvm *gpusvm = range->gpusvm; in drm_gpusvm_range_destroy()
1279 gpusvm->ops->range_free(range); in drm_gpusvm_range_destroy()
1281 kfree(range); in drm_gpusvm_range_destroy()
1291 void drm_gpusvm_range_put(struct drm_gpusvm_range *range) in drm_gpusvm_range_put() argument
1293 kref_put(&range->refcount, drm_gpusvm_range_destroy); in drm_gpusvm_range_put()
1334 struct drm_gpusvm_range *range) in drm_gpusvm_range_pages_valid() argument
1336 return drm_gpusvm_pages_valid(gpusvm, &range->pages); in drm_gpusvm_range_pages_valid()
1597 struct drm_gpusvm_range *range, in drm_gpusvm_range_get_pages() argument
1600 return drm_gpusvm_get_pages(gpusvm, &range->pages, gpusvm->mm, in drm_gpusvm_range_get_pages()
1601 &range->notifier->notifier, in drm_gpusvm_range_get_pages()
1602 drm_gpusvm_range_start(range), in drm_gpusvm_range_get_pages()
1603 drm_gpusvm_range_end(range), ctx); in drm_gpusvm_range_get_pages()
1650 struct drm_gpusvm_range *range, in drm_gpusvm_range_unmap_pages() argument
1653 unsigned long npages = npages_in_range(drm_gpusvm_range_start(range), in drm_gpusvm_range_unmap_pages()
1654 drm_gpusvm_range_end(range)); in drm_gpusvm_range_unmap_pages()
1656 return drm_gpusvm_unmap_pages(gpusvm, &range->pages, npages, ctx); in drm_gpusvm_range_unmap_pages()
1670 struct drm_gpusvm_range *range) in drm_gpusvm_range_evict() argument
1672 struct mmu_interval_notifier *notifier = &range->notifier->notifier; in drm_gpusvm_range_evict()
1676 .start = drm_gpusvm_range_start(range), in drm_gpusvm_range_evict()
1677 .end = drm_gpusvm_range_end(range), in drm_gpusvm_range_evict()
1683 unsigned long npages = npages_in_range(drm_gpusvm_range_start(range), in drm_gpusvm_range_evict()
1684 drm_gpusvm_range_end(range)); in drm_gpusvm_range_evict()
1731 struct drm_gpusvm_range *range = NULL; in drm_gpusvm_has_mapping() local
1733 drm_gpusvm_for_each_range(range, notifier, start, end) in drm_gpusvm_has_mapping()
1749 void drm_gpusvm_range_set_unmapped(struct drm_gpusvm_range *range, in drm_gpusvm_range_set_unmapped() argument
1752 lockdep_assert_held_write(&range->gpusvm->notifier_lock); in drm_gpusvm_range_set_unmapped()
1754 range->pages.flags.unmapped = true; in drm_gpusvm_range_set_unmapped()
1755 if (drm_gpusvm_range_start(range) < mmu_range->start || in drm_gpusvm_range_set_unmapped()
1756 drm_gpusvm_range_end(range) > mmu_range->end) in drm_gpusvm_range_set_unmapped()
1757 range->pages.flags.partial_unmap = true; in drm_gpusvm_range_set_unmapped()