diff options
-rw-r--r-- | drivers/gpu/drm/vmwgfx/vmwgfx_drv.c | 17 |
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); |