Lines Matching refs:userptr

159 	struct xe_userptr *userptr = &uvma->userptr;  in xe_hmm_userptr_set_mapped()  local
163 lockdep_assert_held(&vm->userptr.notifier_lock); in xe_hmm_userptr_set_mapped()
165 mutex_lock(&userptr->unmap_mutex); in xe_hmm_userptr_set_mapped()
166 xe_assert(vm->xe, !userptr->mapped); in xe_hmm_userptr_set_mapped()
167 userptr->mapped = true; in xe_hmm_userptr_set_mapped()
168 mutex_unlock(&userptr->unmap_mutex); in xe_hmm_userptr_set_mapped()
173 struct xe_userptr *userptr = &uvma->userptr; in xe_hmm_userptr_unmap() local
179 if (!lockdep_is_held_type(&vm->userptr.notifier_lock, 0) && in xe_hmm_userptr_unmap()
188 mutex_lock(&userptr->unmap_mutex); in xe_hmm_userptr_unmap()
189 if (userptr->sg && userptr->mapped) in xe_hmm_userptr_unmap()
190 dma_unmap_sgtable(xe->drm.dev, userptr->sg, in xe_hmm_userptr_unmap()
192 userptr->mapped = false; in xe_hmm_userptr_unmap()
193 mutex_unlock(&userptr->unmap_mutex); in xe_hmm_userptr_unmap()
206 struct xe_userptr *userptr = &uvma->userptr; in xe_hmm_userptr_free_sg() local
208 xe_assert(xe_vma_vm(&uvma->vma)->xe, userptr->sg); in xe_hmm_userptr_free_sg()
210 sg_free_table(userptr->sg); in xe_hmm_userptr_free_sg()
211 userptr->sg = NULL; in xe_hmm_userptr_free_sg()
243 struct xe_userptr *userptr; in xe_hmm_userptr_populate_range() local
253 .notifier = &uvma->userptr.notifier, in xe_hmm_userptr_populate_range()
261 userptr = &uvma->userptr; in xe_hmm_userptr_populate_range()
264 mmap_assert_locked(userptr->notifier.mm); in xe_hmm_userptr_populate_range()
269 notifier_seq = mmu_interval_read_begin(&userptr->notifier); in xe_hmm_userptr_populate_range()
270 if (notifier_seq == userptr->notifier_seq) in xe_hmm_userptr_populate_range()
273 if (userptr->sg) in xe_hmm_userptr_populate_range()
284 if (!mmget_not_zero(userptr->notifier.mm)) { in xe_hmm_userptr_populate_range()
292 hmm_range.notifier_seq = mmu_interval_read_begin(&userptr->notifier); in xe_hmm_userptr_populate_range()
295 mmap_read_lock(userptr->notifier.mm); in xe_hmm_userptr_populate_range()
300 mmap_read_unlock(userptr->notifier.mm); in xe_hmm_userptr_populate_range()
311 mmput(userptr->notifier.mm); in xe_hmm_userptr_populate_range()
316 ret = xe_alloc_sg(vm->xe, &userptr->sgt, &hmm_range, &vm->userptr.notifier_lock); in xe_hmm_userptr_populate_range()
320 ret = down_read_interruptible(&vm->userptr.notifier_lock); in xe_hmm_userptr_populate_range()
329 ret = xe_build_sg(vm->xe, &hmm_range, &userptr->sgt, in xe_hmm_userptr_populate_range()
330 &vm->userptr.notifier_lock, write); in xe_hmm_userptr_populate_range()
335 userptr->sg = &userptr->sgt; in xe_hmm_userptr_populate_range()
337 userptr->notifier_seq = hmm_range.notifier_seq; in xe_hmm_userptr_populate_range()
338 up_read(&vm->userptr.notifier_lock); in xe_hmm_userptr_populate_range()
343 up_read(&vm->userptr.notifier_lock); in xe_hmm_userptr_populate_range()
345 sg_free_table(&userptr->sgt); in xe_hmm_userptr_populate_range()