Browse Source

drm/nouveau/vm: make each vma take a reference on its parent vm

Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Ben Skeggs 12 years ago
parent
commit
780194b1b9
1 changed files with 4 additions and 1 deletions
  1. 4 1
      drivers/gpu/drm/nouveau/core/subdev/vm/base.c

+ 4 - 1
drivers/gpu/drm/nouveau/core/subdev/vm/base.c

@@ -320,7 +320,8 @@ nouveau_vm_get(struct nouveau_vm *vm, u64 size, u32 page_shift,
 	}
 	mutex_unlock(&nv_subdev(vmm)->mutex);
 
-	vma->vm     = vm;
+	vma->vm = NULL;
+	nouveau_vm_ref(vm, &vma->vm, NULL);
 	vma->offset = (u64)vma->node->offset << 12;
 	vma->access = access;
 	return 0;
@@ -342,6 +343,8 @@ nouveau_vm_put(struct nouveau_vma *vma)
 	nouveau_vm_unmap_pgt(vm, vma->node->type != vmm->spg_shift, fpde, lpde);
 	nouveau_mm_free(&vm->mm, &vma->node);
 	mutex_unlock(&nv_subdev(vmm)->mutex);
+
+	nouveau_vm_ref(NULL, &vma->vm, NULL);
 }
 
 int