rk: revert to v3.10
[firefly-linux-kernel-4.4.55.git] / drivers / gpu / drm / vmwgfx / vmwgfx_drv.c
index 6c44c69a5ba4ab1b73680ba53907fb346abb2ec3..07dfd823cc304987bc41056d705bbd6253216013 100644 (file)
@@ -740,17 +740,9 @@ static void vmw_postclose(struct drm_device *dev,
        struct vmw_fpriv *vmw_fp;
 
        vmw_fp = vmw_fpriv(file_priv);
-
-       if (vmw_fp->locked_master) {
-               struct vmw_master *vmaster =
-                       vmw_master(vmw_fp->locked_master);
-
-               ttm_lock_set_kill(&vmaster->lock, true, SIGTERM);
-               ttm_vt_unlock(&vmaster->lock);
-               drm_master_put(&vmw_fp->locked_master);
-       }
-
        ttm_object_file_release(&vmw_fp->tfile);
+       if (vmw_fp->locked_master)
+               drm_master_put(&vmw_fp->locked_master);
        kfree(vmw_fp);
 }
 
@@ -950,13 +942,14 @@ static void vmw_master_drop(struct drm_device *dev,
 
        vmw_fp->locked_master = drm_master_get(file_priv->master);
        ret = ttm_vt_lock(&vmaster->lock, false, vmw_fp->tfile);
+       vmw_execbuf_release_pinned_bo(dev_priv);
+
        if (unlikely((ret != 0))) {
                DRM_ERROR("Unable to lock TTM at VT switch.\n");
                drm_master_put(&vmw_fp->locked_master);
        }
 
-       ttm_lock_set_kill(&vmaster->lock, false, SIGTERM);
-       vmw_execbuf_release_pinned_bo(dev_priv);
+       ttm_lock_set_kill(&vmaster->lock, true, SIGTERM);
 
        if (!dev_priv->enable_fb) {
                ret = ttm_bo_evict_mm(&dev_priv->bdev, TTM_PL_VRAM);