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

Christian König
2017-03-08T14:25:22Z

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

_______________________________________________
amd-gfx mailing list
amd-gfx@lists.freedesktop.org