Re: [PATCH 15/24] drm/radeon: Merge pre/postclose hooks

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Reviewed-by: Christian König <christian.koenig@xxxxxxx> for this one and #19.

Christian.

Am 08.03.2017 um 15:12 schrieb Daniel Vetter:
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@xxxxxxx>
Cc: Christian König <christian.koenig@xxxxxxx>
Cc: amd-gfx@xxxxxxxxxxxxxxxxxxxxx
Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx>
---
  drivers/gpu/drm/radeon/radeon_drv.c |  3 ---
  drivers/gpu/drm/radeon/radeon_kms.c | 42 +++++++++++++------------------------
  2 files changed, 14 insertions(+), 31 deletions(-)

diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
index 956c425e639e..312436a8d9e5 100644
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
@@ -108,8 +108,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);
@@ -538,7 +536,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,
diff --git a/drivers/gpu/drm/radeon/radeon_kms.c b/drivers/gpu/drm/radeon/radeon_kms.c
index 56f35c06742c..a32a62e03a44 100644
--- a/drivers/gpu/drm/radeon/radeon_kms.c
+++ b/drivers/gpu/drm/radeon/radeon_kms.c
@@ -691,13 +691,26 @@ int radeon_driver_open_kms(struct drm_device *dev, struct drm_file *file_priv)
   * @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.
   */


_______________________________________________
Intel-gfx mailing list
Intel-gfx@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/intel-gfx




[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux