diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2013-05-06 18:36:33 -0400 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2013-06-30 23:45:09 -0400 |
commit | 780194b1b9f5fdbaa06dd71e60b31ceaaedafbe4 (patch) | |
tree | 62430d6a1628c934454baae00a79ede867b1992d | |
parent | 51a506c012edb4e8a34e3596df806e7d32067d8b (diff) |
drm/nouveau/vm: make each vma take a reference on its parent vm
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
-rw-r--r-- | drivers/gpu/drm/nouveau/core/subdev/vm/base.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c b/drivers/gpu/drm/nouveau/core/subdev/vm/base.c index 6fc389163532..34d3fbfbd631 100644 --- a/drivers/gpu/drm/nouveau/core/subdev/vm/base.c +++ b/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, | |||
320 | } | 320 | } |
321 | mutex_unlock(&nv_subdev(vmm)->mutex); | 321 | mutex_unlock(&nv_subdev(vmm)->mutex); |
322 | 322 | ||
323 | vma->vm = vm; | 323 | vma->vm = NULL; |
324 | nouveau_vm_ref(vm, &vma->vm, NULL); | ||
324 | vma->offset = (u64)vma->node->offset << 12; | 325 | vma->offset = (u64)vma->node->offset << 12; |
325 | vma->access = access; | 326 | vma->access = access; |
326 | return 0; | 327 | return 0; |
@@ -342,6 +343,8 @@ nouveau_vm_put(struct nouveau_vma *vma) | |||
342 | nouveau_vm_unmap_pgt(vm, vma->node->type != vmm->spg_shift, fpde, lpde); | 343 | nouveau_vm_unmap_pgt(vm, vma->node->type != vmm->spg_shift, fpde, lpde); |
343 | nouveau_mm_free(&vm->mm, &vma->node); | 344 | nouveau_mm_free(&vm->mm, &vma->node); |
344 | mutex_unlock(&nv_subdev(vmm)->mutex); | 345 | mutex_unlock(&nv_subdev(vmm)->mutex); |
346 | |||
347 | nouveau_vm_ref(NULL, &vma->vm, NULL); | ||
345 | } | 348 | } |
346 | 349 | ||
347 | int | 350 | int |