|
@@ -691,13 +691,26 @@ out_suspend:
|
|
|
* @dev: drm dev pointer
|
|
|
* @file_priv: drm file
|
|
|
*
|
|
|
- * On device post close, tear down vm on cayman+ (all asics).
|
|
|
+ * On device close, tear down hyperz and cmask filps on r1xx-r5xx
|
|
|
+ * (all asics). And tear down vm on cayman+ (all asics).
|
|
|
*/
|
|
|
void radeon_driver_postclose_kms(struct drm_device *dev,
|
|
|
struct drm_file *file_priv)
|
|
|
{
|
|
|
struct radeon_device *rdev = dev->dev_private;
|
|
|
|
|
|
+ pm_runtime_get_sync(dev->dev);
|
|
|
+
|
|
|
+ mutex_lock(&rdev->gem.mutex);
|
|
|
+ if (rdev->hyperz_filp == file_priv)
|
|
|
+ rdev->hyperz_filp = NULL;
|
|
|
+ if (rdev->cmask_filp == file_priv)
|
|
|
+ rdev->cmask_filp = NULL;
|
|
|
+ mutex_unlock(&rdev->gem.mutex);
|
|
|
+
|
|
|
+ radeon_uvd_free_handles(rdev, file_priv);
|
|
|
+ radeon_vce_free_handles(rdev, file_priv);
|
|
|
+
|
|
|
/* new gpu have virtual address space support */
|
|
|
if (rdev->family >= CHIP_CAYMAN && file_priv->driver_priv) {
|
|
|
struct radeon_fpriv *fpriv = file_priv->driver_priv;
|
|
@@ -721,33 +734,6 @@ void radeon_driver_postclose_kms(struct drm_device *dev,
|
|
|
pm_runtime_put_autosuspend(dev->dev);
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * radeon_driver_preclose_kms - drm callback for pre close
|
|
|
- *
|
|
|
- * @dev: drm dev pointer
|
|
|
- * @file_priv: drm file
|
|
|
- *
|
|
|
- * On device pre close, tear down hyperz and cmask filps on r1xx-r5xx
|
|
|
- * (all asics).
|
|
|
- */
|
|
|
-void radeon_driver_preclose_kms(struct drm_device *dev,
|
|
|
- struct drm_file *file_priv)
|
|
|
-{
|
|
|
- struct radeon_device *rdev = dev->dev_private;
|
|
|
-
|
|
|
- pm_runtime_get_sync(dev->dev);
|
|
|
-
|
|
|
- mutex_lock(&rdev->gem.mutex);
|
|
|
- if (rdev->hyperz_filp == file_priv)
|
|
|
- rdev->hyperz_filp = NULL;
|
|
|
- if (rdev->cmask_filp == file_priv)
|
|
|
- rdev->cmask_filp = NULL;
|
|
|
- mutex_unlock(&rdev->gem.mutex);
|
|
|
-
|
|
|
- radeon_uvd_free_handles(rdev, file_priv);
|
|
|
- radeon_vce_free_handles(rdev, file_priv);
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* VBlank related functions.
|
|
|
*/
|