diff options
author | Ben Skeggs <bskeggs@redhat.com> | 2011-06-07 15:43:31 +1000 |
---|---|---|
committer | Ben Skeggs <bskeggs@redhat.com> | 2011-06-23 16:00:27 +1000 |
commit | 3d483d575bfba52eae04bf2575239642c26c355a (patch) | |
tree | 366a8ee284b8fcee63f10f194abfb589cf68b559 /drivers/gpu/drm/nouveau/nouveau_object.c | |
parent | 9f9f51fcb92ba3c1f395e0908407c8c1f5305a31 (diff) | |
download | talos-op-linux-3d483d575bfba52eae04bf2575239642c26c355a.tar.gz talos-op-linux-3d483d575bfba52eae04bf2575239642c26c355a.zip |
drm/nvc0: explicitly map PDISP semaphore buffer into each channel's vm
Signed-off-by: Ben Skeggs <bskeggs@redhat.com>
Diffstat (limited to 'drivers/gpu/drm/nouveau/nouveau_object.c')
-rw-r--r-- | drivers/gpu/drm/nouveau/nouveau_object.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/drivers/gpu/drm/nouveau/nouveau_object.c b/drivers/gpu/drm/nouveau/nouveau_object.c index 37e6ca8990c6..115827133bb7 100644 --- a/drivers/gpu/drm/nouveau/nouveau_object.c +++ b/drivers/gpu/drm/nouveau/nouveau_object.c @@ -717,6 +717,17 @@ nouveau_gpuobj_channel_init(struct nouveau_channel *chan, nv_wo32(chan->ramin, 0x0204, upper_32_bits(vpgd->obj->vinst)); nv_wo32(chan->ramin, 0x0208, 0xffffffff); nv_wo32(chan->ramin, 0x020c, 0x000000ff); + + for (i = 0; i < 2; i++) { + struct nv50_display_crtc *dispc = + &nv50_display(dev)->crtc[i]; + + ret = nouveau_bo_vma_add(dispc->sem.bo, chan->vm, + &chan->dispc_vma[i]); + if (ret) + return ret; + } + return 0; } @@ -841,9 +852,14 @@ void nouveau_gpuobj_channel_takedown(struct nouveau_channel *chan) { struct drm_device *dev = chan->dev; + int i; NV_DEBUG(dev, "ch%d\n", chan->id); + for (i = 0; i < 2; i++) { + struct nv50_display_crtc *dispc = &nv50_display(dev)->crtc[i]; + nouveau_bo_vma_del(dispc->sem.bo, &chan->dispc_vma[i]); + } nouveau_vm_ref(NULL, &chan->vm, chan->vm_pd); nouveau_gpuobj_ref(NULL, &chan->vm_pd); |