diff mbox

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

Message ID 20170308141257.12119-16-daniel.vetter@ffwll.ch (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel Vetter March 8, 2017, 2:12 p.m. UTC
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
Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
---
 drivers/gpu/drm/radeon/radeon_drv.c |  3 ---
 drivers/gpu/drm/radeon/radeon_kms.c | 42 +++++++++++++------------------------
 2 files changed, 14 insertions(+), 31 deletions(-)

Comments

Christian König March 8, 2017, 2:25 p.m. UTC | #1
Reviewed-by: Christian König <christian.koenig@amd.com> 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@amd.com>
> Cc: Christian König <christian.koenig@amd.com>
> Cc: amd-gfx@lists.freedesktop.org
> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
> ---
>   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.
>    */
Alex Deucher March 9, 2017, 3:58 a.m. UTC | #2
On Wed, Mar 8, 2017 at 9:25 AM, Christian König
<christian.koenig@amd.com> wrote:
> Reviewed-by: Christian König <christian.koenig@amd.com> for this one and
> #19.

Applied both.

Thanks!

Alex

>
> 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@amd.com>
>> Cc: Christian König <christian.koenig@amd.com>
>> Cc: amd-gfx@lists.freedesktop.org
>> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
>> ---
>>   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.
>>    */
>
>
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx@lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx
diff mbox

Patch

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.
  */