summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c')
-rw-r--r--drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c20
1 files changed, 11 insertions, 9 deletions
diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c
index b40c131af20e..9300529917fc 100644
--- a/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c
+++ b/drivers/gpu/drm/nouveau/nvkm/subdev/bar/nv50.c
@@ -140,7 +140,7 @@ nv50_bar_oneinit(struct nvkm_bar *base)
if (ret)
return ret;
- ret = nvkm_vm_ref(vm, &bar->bar2_vm, bar->pgd);
+ ret = nvkm_vm_ref(vm, &bar->bar2_vm, bar->mem->memory);
nvkm_vm_ref(NULL, &vm, NULL);
if (ret)
return ret;
@@ -172,7 +172,7 @@ nv50_bar_oneinit(struct nvkm_bar *base)
atomic_inc(&vm->engref[NVKM_SUBDEV_BAR]);
- ret = nvkm_vm_ref(vm, &bar->bar1_vm, bar->pgd);
+ ret = nvkm_vm_ref(vm, &bar->bar1_vm, bar->mem->memory);
nvkm_vm_ref(NULL, &vm, NULL);
if (ret)
return ret;
@@ -197,13 +197,15 @@ void *
nv50_bar_dtor(struct nvkm_bar *base)
{
struct nv50_bar *bar = nv50_bar(base);
- nvkm_gpuobj_del(&bar->bar1);
- nvkm_vm_ref(NULL, &bar->bar1_vm, bar->pgd);
- nvkm_gpuobj_del(&bar->bar2);
- nvkm_vm_ref(NULL, &bar->bar2_vm, bar->pgd);
- nvkm_gpuobj_del(&bar->pgd);
- nvkm_gpuobj_del(&bar->pad);
- nvkm_gpuobj_del(&bar->mem);
+ if (bar->mem) {
+ nvkm_gpuobj_del(&bar->bar1);
+ nvkm_vm_ref(NULL, &bar->bar1_vm, bar->mem->memory);
+ nvkm_gpuobj_del(&bar->bar2);
+ nvkm_vm_ref(NULL, &bar->bar2_vm, bar->mem->memory);
+ nvkm_gpuobj_del(&bar->pgd);
+ nvkm_gpuobj_del(&bar->pad);
+ nvkm_gpuobj_del(&bar->mem);
+ }
return bar;
}