diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0582-drm-amd-display-Update-atomic-state-hooks.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0582-drm-amd-display-Update-atomic-state-hooks.patch | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0582-drm-amd-display-Update-atomic-state-hooks.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0582-drm-amd-display-Update-atomic-state-hooks.patch new file mode 100644 index 00000000..4f314a11 --- /dev/null +++ b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0582-drm-amd-display-Update-atomic-state-hooks.patch @@ -0,0 +1,96 @@ +From 55ce28ba435e90d06fdce25f5c282d048cd43a8e Mon Sep 17 00:00:00 2001 +From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> +Date: Thu, 29 Jun 2017 10:41:17 -0400 +Subject: [PATCH 0582/4131] drm/amd/display: Update atomic state hooks. + +Reimplement atomic_state_alloc and atomic_state_clear to +release validate_ctx. + +Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> +Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> +Acked-by: Harry Wentland <Harry.Wentland@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +--- + drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 25 +++++++++------------- + .../drm/amd/display/amdgpu_dm/amdgpu_dm_types.c | 2 +- + 2 files changed, 11 insertions(+), 16 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 c2a6f2e..d0651b6 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -648,33 +648,29 @@ dm_atomic_state_alloc(struct drm_device *dev) + return &state->base; + } + +-void dm_atomic_state_clear(struct drm_atomic_state *s) +-{ +- struct dm_atomic_state *state = to_dm_atomic_state(s); +- drm_atomic_state_default_clear(&state->base); +-} +- + +-static void dm_atomic_state_free(struct drm_atomic_state *state) ++void dm_atomic_state_clear(struct drm_atomic_state *state) + { + struct dm_atomic_state *dm_state = to_dm_atomic_state(state); + int i, j; + +- drm_atomic_state_default_release(state); +- + for (i = 0; i < dm_state->set_count; i++) { + for (j = 0; j < dm_state->set[i].surface_count; j++) { + dc_surface_release(dm_state->set[i].surfaces[j]); ++ dm_state->set[i].surfaces[j] = NULL; + } +- } + +- for (i = 0; i < dm_state->set_count; i++) + dc_stream_release(dm_state->set[i].stream); ++ dm_state->set[i].stream = NULL; ++ } ++ dm_state->set_count = 0; + +- kfree(dm_state); +-} +- ++ dc_resource_validate_ctx_destruct(dm_state->context); ++ dm_free(dm_state->context); ++ dm_state->context = NULL; + ++ drm_atomic_state_default_clear(state); ++} + + static const struct drm_mode_config_funcs amdgpu_dm_mode_funcs = { + .fb_create = amdgpu_user_framebuffer_create, +@@ -683,7 +679,6 @@ static const struct drm_mode_config_funcs amdgpu_dm_mode_funcs = { + .atomic_commit = drm_atomic_helper_commit, + .atomic_state_alloc = dm_atomic_state_alloc, + .atomic_state_clear = dm_atomic_state_clear, +- .atomic_state_free = dm_atomic_state_free, + }; + + static struct drm_mode_config_helper_funcs amdgpu_dm_mode_config_helperfuncs = { +diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c +index d4ce770..08afe1f 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm_types.c +@@ -2840,6 +2840,7 @@ void amdgpu_dm_atomic_commit_tail( + /* DC is optimized not to do anything if 'streams' didn't change. */ + WARN_ON(!dc_commit_context(dm->dc, dm_state->context)); + ++ + list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) { + struct amdgpu_crtc *acrtc = to_amdgpu_crtc(crtc); + +@@ -3214,7 +3215,6 @@ int amdgpu_dm_atomic_check(struct drm_device *dev, + __func__, acrtc->base.base.id); + break; + } +- new_stream->priv = acrtc; + + new_streams[new_stream_count] = new_stream; + dm_state->set_count = update_in_val_sets_stream( +-- +2.7.4 + |