]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/gpu/drm/nouveau/nv04_crtc.c
drm/nouveau: unpin various bo's before destroying
[karo-tx-linux.git] / drivers / gpu / drm / nouveau / nv04_crtc.c
index 82a0d9c6cda3e84279537561dc9d5c97cb604d6a..6578cd28c556425b3634517facb5d1cc5fc6aa41 100644 (file)
@@ -730,6 +730,7 @@ static void nv_crtc_destroy(struct drm_crtc *crtc)
        drm_crtc_cleanup(crtc);
 
        nouveau_bo_unmap(nv_crtc->cursor.nvbo);
+       nouveau_bo_unpin(nv_crtc->cursor.nvbo);
        nouveau_bo_ref(NULL, &nv_crtc->cursor.nvbo);
        kfree(nv_crtc);
 }
@@ -1056,8 +1057,11 @@ nv04_crtc_create(struct drm_device *dev, int crtc_num)
                             0, 0x0000, NULL, &nv_crtc->cursor.nvbo);
        if (!ret) {
                ret = nouveau_bo_pin(nv_crtc->cursor.nvbo, TTM_PL_FLAG_VRAM);
-               if (!ret)
+               if (!ret) {
                        ret = nouveau_bo_map(nv_crtc->cursor.nvbo);
+                       if (ret)
+                               nouveau_bo_unpin(nv_crtc->cursor.nvbo);
+               }
                if (ret)
                        nouveau_bo_ref(NULL, &nv_crtc->cursor.nvbo);
        }