aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/vmwgfx/vmwgfx_drv.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
index 07dfd823cc30..6c44c69a5ba4 100644
--- a/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
+++ b/drivers/gpu/drm/vmwgfx/vmwgfx_drv.c
@@ -740,9 +740,17 @@ static void vmw_postclose(struct drm_device *dev,
740 struct vmw_fpriv *vmw_fp; 740 struct vmw_fpriv *vmw_fp;
741 741
742 vmw_fp = vmw_fpriv(file_priv); 742 vmw_fp = vmw_fpriv(file_priv);
743 ttm_object_file_release(&vmw_fp->tfile); 743
744 if (vmw_fp->locked_master) 744 if (vmw_fp->locked_master) {
745 struct vmw_master *vmaster =
746 vmw_master(vmw_fp->locked_master);
747
748 ttm_lock_set_kill(&vmaster->lock, true, SIGTERM);
749 ttm_vt_unlock(&vmaster->lock);
745 drm_master_put(&vmw_fp->locked_master); 750 drm_master_put(&vmw_fp->locked_master);
751 }
752
753 ttm_object_file_release(&vmw_fp->tfile);
746 kfree(vmw_fp); 754 kfree(vmw_fp);
747} 755}
748 756
@@ -942,14 +950,13 @@ static void vmw_master_drop(struct drm_device *dev,
942 950
943 vmw_fp->locked_master = drm_master_get(file_priv->master); 951 vmw_fp->locked_master = drm_master_get(file_priv->master);
944 ret = ttm_vt_lock(&vmaster->lock, false, vmw_fp->tfile); 952 ret = ttm_vt_lock(&vmaster->lock, false, vmw_fp->tfile);
945 vmw_execbuf_release_pinned_bo(dev_priv);
946
947 if (unlikely((ret != 0))) { 953 if (unlikely((ret != 0))) {
948 DRM_ERROR("Unable to lock TTM at VT switch.\n"); 954 DRM_ERROR("Unable to lock TTM at VT switch.\n");
949 drm_master_put(&vmw_fp->locked_master); 955 drm_master_put(&vmw_fp->locked_master);
950 } 956 }
951 957
952 ttm_lock_set_kill(&vmaster->lock, true, SIGTERM); 958 ttm_lock_set_kill(&vmaster->lock, false, SIGTERM);
959 vmw_execbuf_release_pinned_bo(dev_priv);
953 960
954 if (!dev_priv->enable_fb) { 961 if (!dev_priv->enable_fb) {
955 ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM); 962 ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM);