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;