diff options
author | Shirish S <shirish.s@amd.com> | 2017-09-26 12:26:41 +0530 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2017-09-26 18:17:44 -0400 |
commit | 2c8f195adf21430e4e8bbd13942826ccf8fa225c (patch) | |
tree | c6527a541d346cd8d65caedec6ea690d290ab848 /drivers/gpu/drm/amd/display | |
parent | 4a6cee2ca142615970fa3334191e992e7fb51159 (diff) | |
download | linux-2c8f195adf21430e4e8bbd13942826ccf8fa225c.tar.bz2 |
drm/amd/display: don't clean-up bottom pipe plane_state
In the scenario of setting underlay, dc_validate_global_state()
is called after constructing the context with all
relevant bottom_pipe related configurations in dm_update_planes_state().
Currently, in dc_validate_global_state(), without checking for bottom_pipe's
existence, the pipe_ctx structure is initialised to 0, hence
nullyfying the plane_state of bottom_pipe which shall be accessed
in populate_initial_data() called from bw_calcs().
Due to this null pointer access kernel panics and leads to reboot
when underlay is tried to set.
This patch fixes the issue by no longer clearing the top_pipe. This
workaround is no longer required.
Signed-off-by: Shirish S <shirish.s@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display')
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/core/dc_resource.c | 8 |
1 files changed, 0 insertions, 8 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c index 15b627548cd2..dcfdfebd5c62 100644 --- a/drivers/gpu/drm/amd/display/dc/core/dc_resource.c +++ b/drivers/gpu/drm/amd/display/dc/core/dc_resource.c @@ -1729,14 +1729,6 @@ bool dc_validate_global_state( dc, new_ctx) != DC_OK) return false; - /* TODO without this SWDEV-114774 brakes */ - for (i = 0; i < dc->res_pool->pipe_count; i++) { - struct pipe_ctx *pipe_ctx = &new_ctx->res_ctx.pipe_ctx[i]; - - if (pipe_ctx->top_pipe) - memset(pipe_ctx, 0, sizeof(*pipe_ctx)); - } - for (i = 0; new_ctx && i < new_ctx->stream_count; i++) { struct dc_stream_state *stream = new_ctx->streams[i]; |