[PATCH 15/28] drm/amd/display: Do not release DC state on S3 resume

Andrey Grodzovsky andrey.grodzovsky at amd.com
Thu Oct 19 20:39:06 UTC 2017



On 2017-10-19 01:46 PM, Harry Wentland wrote:
> From: "Leo (Sunpeng) Li" <sunpeng.li at amd.com>
>
> Because of the following patch:
>
> Leo (Sunpeng) Li    Move copy_construct from state_alloc to atomic_check
>
> We do not allocate the DC state within dm_atomic_state_alloc anymore.
>
> Since this function is a part of the S3 resume code path, we should not
> release the state when refreshing it within amdgpu_dm_display_resume.
> Just create it, as it has already been freed.
>
> Signed-off-by: Leo (Sunpeng) Li <sunpeng.li at amd.com>
> Reviewed-by: Roman Li <Roman.Li at amd.com>
> Reviewed-by: Harry Wentland <Harry.Wentland at amd.com>
> ---
>   drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 2 --
>   1 file changed, 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> index 8910a820fbf5..a6424eb1c1a5 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -691,8 +691,6 @@ int amdgpu_dm_display_resume(struct amdgpu_device *adev)
>   	 * disabled. Refresh cached state to match actual current state before
>   	 * restoring it.
>   	 */
> -	WARN_ON(kref_read(&cached_state->context->refcount) > 1);
> -	dc_release_state(cached_state->context);
>   
>   	cached_state->context = dc_create_state();

The new patch is ok but in the existing code

cached_state->context = dc_create_state();

seems to me will cause memory leak since cached_state->context is later 
overridden inside amdgpu_dm_atomic_check where you allocate
and copy construct the current dm/dc states anyway.  Seems to me you can 
drop dc_state allocation in amdgpu_dm_display_resume since you
only reference there the drm_atomic_state, later in 
amdgpu_dm_atomic_check it will be allocated anyway.

patches 9-15 Reviewed-by: Andrey Grodzovsky <Andrey.Grodzovsky at amd.com>

Andrey
>   	ASSERT(cached_state->context);



More information about the amd-gfx mailing list