drm/radeon: Merge pre/postclose hooks
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 8 Mar 2017 14:12:48 +0000 (15:12 +0100)
committerAlex Deucher <alexander.deucher@amd.com>
Thu, 30 Mar 2017 03:53:33 +0000 (23:53 -0400)
Again no apparent explanation for the split except hysterical raisins.
Merging them also makes it a bit more obviuos what's going on wrt the
runtime pm refdancing.

Cc: Alex Deucher <alexander.deucher@amd.com>
Cc: Christian König <christian.koenig@amd.com>
Cc: amd-gfx@lists.freedesktop.org
Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/radeon_drv.c
drivers/gpu/drm/radeon/radeon_kms.c

index 1ecd6930c4525f8296a674cdafc535086ee41a1d..93d45aa5c3d4f73bb421c5e4f2a844ef56f6752a 100644 (file)
@@ -109,8 +109,6 @@ void radeon_driver_lastclose_kms(struct drm_device *dev);
 int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv);
 void radeon_driver_postclose_kms(struct drm_device *dev,
                                 struct drm_file *file_priv);
-void radeon_driver_preclose_kms(struct drm_device *dev,
-                               struct drm_file *file_priv);
 int radeon_suspend_kms(struct drm_device *dev, bool suspend,
                       bool fbcon, bool freeze);
 int radeon_resume_kms(struct drm_device *dev, bool resume, bool fbcon);
@@ -539,7 +537,6 @@ static struct drm_driver kms_driver = {
            DRIVER_PRIME | DRIVER_RENDER,
        .load = radeon_driver_load_kms,
        .open = radeon_driver_open_kms,
-       .preclose = radeon_driver_preclose_kms,
        .postclose = radeon_driver_postclose_kms,
        .lastclose = radeon_driver_lastclose_kms,
        .set_busid = drm_pci_set_busid,
index 56f35c06742c6394ac1f700317885fdfac64addf..a32a62e03a44791fa1d6ecc18a7510ea186497b6 100644 (file)
@@ -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.
  */