lkml.org 
[lkml]   [2019]   [Mar]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.0 171/262] drm/amd/display: Don't re-program planes for DPMS changes
    Date
    From: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>

    [ Upstream commit 5062b797db4103218fa00ee254417b8ecaab7401 ]

    [Why]
    There are opt1c lock warnings and CRTC read timeouts when running the
    "igt@kms_plane@plane-position-hole-dpms-pipe-*" tests. These are
    caused by trying to reprogram planes that are not in the current
    context.

    DPMS off removes the stream from the context. In this case:

    new_crtc_state->active_changed = true
    new_crtc_state->mode_changed = false

    The planes are reprogrammed before the stream is removed from the
    context because stream_state->mode_changed = false.

    For DPMS adds the stream and planes back to the context:

    new_crtc_state->active_changed = true
    new_crtc_state->mode_changed = false

    The planes are also reprogrammed here before the stream is added to the
    context because stream_state->mode_changed = true. They were not
    previously in the current context so warnings occur here.

    [How]
    Set stream_state->mode_changed = true when
    new_crtc_state->active_changed = true too.

    This prevents reprogramming before the context is applied in DC. The
    programming will be done after the context is applied.

    Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
    Reviewed-by: Sun peng Li <Sunpeng.Li@amd.com>
    Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
    Acked-by: Tony Cheng <Tony.Cheng@amd.com>
    Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 3 ++-
    1 file changed, 2 insertions(+), 1 deletion(-)

    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 6d77fd966dbd..0040605cace8 100644
    --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
    +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
    @@ -4975,7 +4975,8 @@ static void amdgpu_dm_commit_planes(struct drm_atomic_state *state,
    static void amdgpu_dm_crtc_copy_transient_flags(struct drm_crtc_state *crtc_state,
    struct dc_stream_state *stream_state)
    {
    - stream_state->mode_changed = crtc_state->mode_changed;
    + stream_state->mode_changed =
    + crtc_state->mode_changed || crtc_state->active_changed;
    }

    static int amdgpu_dm_atomic_commit(struct drm_device *dev,
    --
    2.19.1
    \
     
     \ /
      Last update: 2019-03-27 20:22    [W:4.045 / U:1.068 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site