[PATCH] Revert "drm/amd/display: Match actual state during S3 resume."

Alex Deucher alexdeucher at gmail.com
Fri Oct 20 14:26:35 UTC 2017


On Fri, Oct 20, 2017 at 6:52 AM, Rex Zhu <Rex.Zhu at amd.com> wrote:
> This reverts commit 7ae4acd21e9e264afb079e23d43bcf2238c7dbea.
>
> fix s3 hang issue.
>
> Change-Id: Iefb61cf8072b83146d867961b22f13ad83ab0106
> Signed-off-by: Rex Zhu <Rex.Zhu at amd.com>

I think the DAL guys may have a proper fix for this, but either way:

Acked-by: Alex Deucher <alexander.deucher at amd.com>

> ---
>  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 38 -----------------------
>  1 file changed, 38 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 58e29a2..4501140 100644
> --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
> @@ -649,11 +649,6 @@ int amdgpu_dm_display_resume(struct amdgpu_device *adev)
>         struct drm_connector *connector;
>         struct drm_crtc *crtc;
>         struct drm_crtc_state *crtc_state;
> -       struct dm_crtc_state *dm_crtc_state;
> -       struct drm_plane *plane;
> -       struct drm_plane_state *plane_state;
> -       struct dm_plane_state *dm_plane_state;
> -       struct dm_atomic_state *cached_state;
>         int ret = 0;
>         int i;
>
> @@ -687,43 +682,10 @@ int amdgpu_dm_display_resume(struct amdgpu_device *adev)
>                 amdgpu_dm_update_connector_after_detect(aconnector);
>                 mutex_unlock(&aconnector->hpd_lock);
>         }
> -
>         /* Force mode set in atomic comit */
>         for_each_crtc_in_state(adev->dm.cached_state, crtc, crtc_state, i)
>                         crtc_state->active_changed = true;
>
> -       cached_state = to_dm_atomic_state(adev->dm.cached_state);
> -
> -       /*
> -        * During suspend, the cached state is saved before all streams are
> -        * 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();
> -       ASSERT(cached_state->context);
> -       dc_resource_state_copy_construct_current(adev->dm.dc, cached_state->context);
> -
> -       for_each_new_crtc_in_state(adev->dm.cached_state, crtc, crtc_state, i) {
> -               dm_crtc_state = to_dm_crtc_state(crtc_state);
> -               if (dm_crtc_state->stream) {
> -                       WARN_ON(kref_read(&dm_crtc_state->stream->refcount) > 1);
> -                       dc_stream_release(dm_crtc_state->stream);
> -                       dm_crtc_state->stream = NULL;
> -               }
> -       }
> -
> -       for_each_new_plane_in_state(adev->dm.cached_state, plane, plane_state, i) {
> -               dm_plane_state = to_dm_plane_state(plane_state);
> -               if (dm_plane_state->dc_state) {
> -                       WARN_ON(kref_read(&dm_plane_state->dc_state->refcount) > 1);
> -                       dc_plane_state_release(dm_plane_state->dc_state);
> -                       dm_plane_state->dc_state = NULL;
> -               }
> -       }
> -
>         ret = drm_atomic_helper_resume(ddev, adev->dm.cached_state);
>
>         drm_atomic_state_put(adev->dm.cached_state);
> --
> 1.9.1
>
> _______________________________________________
> amd-gfx mailing list
> amd-gfx at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/amd-gfx


More information about the amd-gfx mailing list