svmm              101 drivers/gpu/drm/nouveau/nouveau_chan.c 			nouveau_svmm_part(chan->vmm->svmm, chan->inst);
svmm              502 drivers/gpu/drm/nouveau/nouveau_chan.c 	ret = nouveau_svmm_join((*pchan)->vmm->svmm, (*pchan)->inst);
svmm               64 drivers/gpu/drm/nouveau/nouveau_svm.c 			struct nouveau_svmm *svmm;
svmm               74 drivers/gpu/drm/nouveau/nouveau_svm.c 	struct nouveau_svmm *svmm;
svmm              176 drivers/gpu/drm/nouveau/nouveau_svm.c 	if (!cli->svm.svmm) {
svmm              211 drivers/gpu/drm/nouveau/nouveau_svm.c nouveau_svmm_part(struct nouveau_svmm *svmm, u64 inst)
svmm              214 drivers/gpu/drm/nouveau/nouveau_svm.c 	if (svmm) {
svmm              215 drivers/gpu/drm/nouveau/nouveau_svm.c 		mutex_lock(&svmm->vmm->cli->drm->svm->mutex);
svmm              216 drivers/gpu/drm/nouveau/nouveau_svm.c 		ivmm = nouveau_ivmm_find(svmm->vmm->cli->drm->svm, inst);
svmm              221 drivers/gpu/drm/nouveau/nouveau_svm.c 		mutex_unlock(&svmm->vmm->cli->drm->svm->mutex);
svmm              227 drivers/gpu/drm/nouveau/nouveau_svm.c nouveau_svmm_join(struct nouveau_svmm *svmm, u64 inst)
svmm              230 drivers/gpu/drm/nouveau/nouveau_svm.c 	if (svmm) {
svmm              233 drivers/gpu/drm/nouveau/nouveau_svm.c 		ivmm->svmm = svmm;
svmm              236 drivers/gpu/drm/nouveau/nouveau_svm.c 		mutex_lock(&svmm->vmm->cli->drm->svm->mutex);
svmm              237 drivers/gpu/drm/nouveau/nouveau_svm.c 		list_add(&ivmm->head, &svmm->vmm->cli->drm->svm->inst);
svmm              238 drivers/gpu/drm/nouveau/nouveau_svm.c 		mutex_unlock(&svmm->vmm->cli->drm->svm->mutex);
svmm              245 drivers/gpu/drm/nouveau/nouveau_svm.c nouveau_svmm_invalidate(struct nouveau_svmm *svmm, u64 start, u64 limit)
svmm              248 drivers/gpu/drm/nouveau/nouveau_svm.c 		bool super = svmm->vmm->vmm.object.client->super;
svmm              249 drivers/gpu/drm/nouveau/nouveau_svm.c 		svmm->vmm->vmm.object.client->super = true;
svmm              250 drivers/gpu/drm/nouveau/nouveau_svm.c 		nvif_object_mthd(&svmm->vmm->vmm.object, NVIF_VMM_V0_PFNCLR,
svmm              255 drivers/gpu/drm/nouveau/nouveau_svm.c 		svmm->vmm->vmm.object.client->super = super;
svmm              263 drivers/gpu/drm/nouveau/nouveau_svm.c 	struct nouveau_svmm *svmm = container_of(mirror, typeof(*svmm), mirror);
svmm              270 drivers/gpu/drm/nouveau/nouveau_svm.c 	SVMM_DBG(svmm, "invalidate %016lx-%016lx", start, limit);
svmm              272 drivers/gpu/drm/nouveau/nouveau_svm.c 	mutex_lock(&svmm->mutex);
svmm              273 drivers/gpu/drm/nouveau/nouveau_svm.c 	if (limit > svmm->unmanaged.start && start < svmm->unmanaged.limit) {
svmm              274 drivers/gpu/drm/nouveau/nouveau_svm.c 		if (start < svmm->unmanaged.start) {
svmm              275 drivers/gpu/drm/nouveau/nouveau_svm.c 			nouveau_svmm_invalidate(svmm, start,
svmm              276 drivers/gpu/drm/nouveau/nouveau_svm.c 						svmm->unmanaged.limit);
svmm              278 drivers/gpu/drm/nouveau/nouveau_svm.c 		start = svmm->unmanaged.limit;
svmm              281 drivers/gpu/drm/nouveau/nouveau_svm.c 	nouveau_svmm_invalidate(svmm, start, limit);
svmm              282 drivers/gpu/drm/nouveau/nouveau_svm.c 	mutex_unlock(&svmm->mutex);
svmm              300 drivers/gpu/drm/nouveau/nouveau_svm.c 	struct nouveau_svmm *svmm = *psvmm;
svmm              301 drivers/gpu/drm/nouveau/nouveau_svm.c 	if (svmm) {
svmm              302 drivers/gpu/drm/nouveau/nouveau_svm.c 		hmm_mirror_unregister(&svmm->mirror);
svmm              313 drivers/gpu/drm/nouveau/nouveau_svm.c 	struct nouveau_svmm *svmm;
svmm              318 drivers/gpu/drm/nouveau/nouveau_svm.c 	if (!(svmm = kzalloc(sizeof(*svmm), GFP_KERNEL)))
svmm              320 drivers/gpu/drm/nouveau/nouveau_svm.c 	svmm->vmm = &cli->svm;
svmm              321 drivers/gpu/drm/nouveau/nouveau_svm.c 	svmm->unmanaged.start = args->unmanaged_addr;
svmm              322 drivers/gpu/drm/nouveau/nouveau_svm.c 	svmm->unmanaged.limit = args->unmanaged_addr + args->unmanaged_size;
svmm              323 drivers/gpu/drm/nouveau/nouveau_svm.c 	mutex_init(&svmm->mutex);
svmm              347 drivers/gpu/drm/nouveau/nouveau_svm.c 	svmm->mm = get_task_mm(current);
svmm              348 drivers/gpu/drm/nouveau/nouveau_svm.c 	down_write(&svmm->mm->mmap_sem);
svmm              349 drivers/gpu/drm/nouveau/nouveau_svm.c 	svmm->mirror.ops = &nouveau_svmm;
svmm              350 drivers/gpu/drm/nouveau/nouveau_svm.c 	ret = hmm_mirror_register(&svmm->mirror, svmm->mm);
svmm              352 drivers/gpu/drm/nouveau/nouveau_svm.c 		cli->svm.svmm = svmm;
svmm              355 drivers/gpu/drm/nouveau/nouveau_svm.c 	up_write(&svmm->mm->mmap_sem);
svmm              356 drivers/gpu/drm/nouveau/nouveau_svm.c 	mmput(svmm->mm);
svmm              360 drivers/gpu/drm/nouveau/nouveau_svm.c 		nouveau_svmm_fini(&svmm);
svmm              494 drivers/gpu/drm/nouveau/nouveau_svm.c nouveau_range_fault(struct nouveau_svmm *svmm, struct hmm_range *range)
svmm              501 drivers/gpu/drm/nouveau/nouveau_svm.c 	ret = hmm_range_register(range, &svmm->mirror);
svmm              503 drivers/gpu/drm/nouveau/nouveau_svm.c 		up_read(&svmm->mm->mmap_sem);
svmm              508 drivers/gpu/drm/nouveau/nouveau_svm.c 		up_read(&svmm->mm->mmap_sem);
svmm              516 drivers/gpu/drm/nouveau/nouveau_svm.c 		up_read(&svmm->mm->mmap_sem);
svmm              531 drivers/gpu/drm/nouveau/nouveau_svm.c 	struct nouveau_svmm *svmm;
svmm              576 drivers/gpu/drm/nouveau/nouveau_svm.c 	for (fi = 0, svmm = NULL; fi < buffer->fault_nr; fi++) {
svmm              577 drivers/gpu/drm/nouveau/nouveau_svm.c 		if (!svmm || buffer->fault[fi]->inst != inst) {
svmm              580 drivers/gpu/drm/nouveau/nouveau_svm.c 			svmm = ivmm ? ivmm->svmm : NULL;
svmm              582 drivers/gpu/drm/nouveau/nouveau_svm.c 			SVM_DBG(svm, "inst %016llx -> svm-%p", inst, svmm);
svmm              584 drivers/gpu/drm/nouveau/nouveau_svm.c 		buffer->fault[fi]->svmm = svmm;
svmm              597 drivers/gpu/drm/nouveau/nouveau_svm.c 		if (!(svmm = buffer->fault[fi]->svmm)) {
svmm              601 drivers/gpu/drm/nouveau/nouveau_svm.c 		SVMM_DBG(svmm, "addr %016llx", buffer->fault[fi]->addr);
svmm              608 drivers/gpu/drm/nouveau/nouveau_svm.c 		if (start < svmm->unmanaged.limit)
svmm              609 drivers/gpu/drm/nouveau/nouveau_svm.c 			limit = min_t(u64, limit, svmm->unmanaged.start);
svmm              611 drivers/gpu/drm/nouveau/nouveau_svm.c 		if (limit > svmm->unmanaged.start)
svmm              612 drivers/gpu/drm/nouveau/nouveau_svm.c 			start = max_t(u64, start, svmm->unmanaged.limit);
svmm              613 drivers/gpu/drm/nouveau/nouveau_svm.c 		SVMM_DBG(svmm, "wndw %016llx-%016llx", start, limit);
svmm              618 drivers/gpu/drm/nouveau/nouveau_svm.c 		down_read(&svmm->mm->mmap_sem);
svmm              619 drivers/gpu/drm/nouveau/nouveau_svm.c 		vma = find_vma_intersection(svmm->mm, start, limit);
svmm              621 drivers/gpu/drm/nouveau/nouveau_svm.c 			SVMM_ERR(svmm, "wndw %016llx-%016llx", start, limit);
svmm              622 drivers/gpu/drm/nouveau/nouveau_svm.c 			up_read(&svmm->mm->mmap_sem);
svmm              628 drivers/gpu/drm/nouveau/nouveau_svm.c 		SVMM_DBG(svmm, "wndw %016llx-%016llx", start, limit);
svmm              631 drivers/gpu/drm/nouveau/nouveau_svm.c 			SVMM_ERR(svmm, "addr %016llx", buffer->fault[fi]->addr);
svmm              632 drivers/gpu/drm/nouveau/nouveau_svm.c 			up_read(&svmm->mm->mmap_sem);
svmm              665 drivers/gpu/drm/nouveau/nouveau_svm.c 			       buffer->fault[fn]->svmm == svmm &&
svmm              673 drivers/gpu/drm/nouveau/nouveau_svm.c 			    buffer->fault[fn]->svmm != svmm ||
svmm              684 drivers/gpu/drm/nouveau/nouveau_svm.c 		SVMM_DBG(svmm, "wndw %016llx-%016llx covering %d fault(s)",
svmm              696 drivers/gpu/drm/nouveau/nouveau_svm.c 		ret = nouveau_range_fault(svmm, &range);
svmm              698 drivers/gpu/drm/nouveau/nouveau_svm.c 			mutex_lock(&svmm->mutex);
svmm              700 drivers/gpu/drm/nouveau/nouveau_svm.c 				mutex_unlock(&svmm->mutex);
svmm              706 drivers/gpu/drm/nouveau/nouveau_svm.c 			svmm->vmm->vmm.object.client->super = true;
svmm              707 drivers/gpu/drm/nouveau/nouveau_svm.c 			ret = nvif_object_ioctl(&svmm->vmm->vmm.object,
svmm              711 drivers/gpu/drm/nouveau/nouveau_svm.c 			svmm->vmm->vmm.object.client->super = false;
svmm              712 drivers/gpu/drm/nouveau/nouveau_svm.c 			mutex_unlock(&svmm->mutex);
svmm              713 drivers/gpu/drm/nouveau/nouveau_svm.c 			up_read(&svmm->mm->mmap_sem);
svmm               35 drivers/gpu/drm/nouveau/nouveau_svm.h static inline int nouveau_svmm_join(struct nouveau_svmm *svmm, u64 inst)
svmm               40 drivers/gpu/drm/nouveau/nouveau_svm.h static inline void nouveau_svmm_part(struct nouveau_svmm *svmm, u64 inst) {}
svmm              123 drivers/gpu/drm/nouveau/nouveau_vmm.c 	nouveau_svmm_fini(&vmm->svmm);
svmm               28 drivers/gpu/drm/nouveau/nouveau_vmm.h 	struct nouveau_svmm *svmm;