Lines Matching refs:userptr

136 	struct xe_userptr *userptr = &uvma->userptr;  in xe_hmm_userptr_set_mapped()  local
140 lockdep_assert_held(&vm->userptr.notifier_lock); in xe_hmm_userptr_set_mapped()
142 mutex_lock(&userptr->unmap_mutex); in xe_hmm_userptr_set_mapped()
143 xe_assert(vm->xe, !userptr->mapped); in xe_hmm_userptr_set_mapped()
144 userptr->mapped = true; in xe_hmm_userptr_set_mapped()
145 mutex_unlock(&userptr->unmap_mutex); in xe_hmm_userptr_set_mapped()
150 struct xe_userptr *userptr = &uvma->userptr; in xe_hmm_userptr_unmap() local
156 if (!lockdep_is_held_type(&vm->userptr.notifier_lock, 0) && in xe_hmm_userptr_unmap()
165 mutex_lock(&userptr->unmap_mutex); in xe_hmm_userptr_unmap()
166 if (userptr->sg && userptr->mapped) in xe_hmm_userptr_unmap()
167 dma_unmap_sgtable(xe->drm.dev, userptr->sg, in xe_hmm_userptr_unmap()
169 userptr->mapped = false; in xe_hmm_userptr_unmap()
170 mutex_unlock(&userptr->unmap_mutex); in xe_hmm_userptr_unmap()
183 struct xe_userptr *userptr = &uvma->userptr; in xe_hmm_userptr_free_sg() local
185 xe_assert(xe_vma_vm(&uvma->vma)->xe, userptr->sg); in xe_hmm_userptr_free_sg()
187 sg_free_table(userptr->sg); in xe_hmm_userptr_free_sg()
188 userptr->sg = NULL; in xe_hmm_userptr_free_sg()
220 struct xe_userptr *userptr; in xe_hmm_userptr_populate_range() local
230 .notifier = &uvma->userptr.notifier, in xe_hmm_userptr_populate_range()
238 userptr = &uvma->userptr; in xe_hmm_userptr_populate_range()
241 mmap_assert_locked(userptr->notifier.mm); in xe_hmm_userptr_populate_range()
246 notifier_seq = mmu_interval_read_begin(&userptr->notifier); in xe_hmm_userptr_populate_range()
247 if (notifier_seq == userptr->notifier_seq) in xe_hmm_userptr_populate_range()
250 if (userptr->sg) in xe_hmm_userptr_populate_range()
261 if (!mmget_not_zero(userptr->notifier.mm)) { in xe_hmm_userptr_populate_range()
269 hmm_range.notifier_seq = mmu_interval_read_begin(&userptr->notifier); in xe_hmm_userptr_populate_range()
272 mmap_read_lock(userptr->notifier.mm); in xe_hmm_userptr_populate_range()
277 mmap_read_unlock(userptr->notifier.mm); in xe_hmm_userptr_populate_range()
288 mmput(userptr->notifier.mm); in xe_hmm_userptr_populate_range()
293 ret = xe_alloc_sg(vm->xe, &userptr->sgt, &hmm_range, &vm->userptr.notifier_lock); in xe_hmm_userptr_populate_range()
297 ret = down_read_interruptible(&vm->userptr.notifier_lock); in xe_hmm_userptr_populate_range()
306 ret = xe_build_sg(vm->xe, &hmm_range, &userptr->sgt, in xe_hmm_userptr_populate_range()
307 &vm->userptr.notifier_lock, write); in xe_hmm_userptr_populate_range()
311 userptr->sg = &userptr->sgt; in xe_hmm_userptr_populate_range()
313 userptr->notifier_seq = hmm_range.notifier_seq; in xe_hmm_userptr_populate_range()
314 up_read(&vm->userptr.notifier_lock); in xe_hmm_userptr_populate_range()
319 up_read(&vm->userptr.notifier_lock); in xe_hmm_userptr_populate_range()
321 sg_free_table(&userptr->sgt); in xe_hmm_userptr_populate_range()