diff options
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0054-drm-amd-display-Fix-refcount-over-dc_sink.patch')
-rw-r--r-- | meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0054-drm-amd-display-Fix-refcount-over-dc_sink.patch | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0054-drm-amd-display-Fix-refcount-over-dc_sink.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0054-drm-amd-display-Fix-refcount-over-dc_sink.patch new file mode 100644 index 00000000..63fda12d --- /dev/null +++ b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0054-drm-amd-display-Fix-refcount-over-dc_sink.patch @@ -0,0 +1,51 @@ +From 6f6a9132b79f55dd25cbcce208aaed806a20d7e5 Mon Sep 17 00:00:00 2001 +From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> +Date: Wed, 7 Dec 2016 14:10:05 -0500 +Subject: [PATCH 0054/4131] drm/amd/display: Fix refcount over dc_sink. + +Retain a dc_sink pointer until a new physical pointer +arrives in case of new display connected. + +Signed-off-by: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> +Reviewed-by: Andrey Grodzovsky <Andrey.Grodzovsky@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 | 12 +++++++++++- + 1 file changed, 11 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 88c32c1..2f13465 100644 +--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c ++++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +@@ -737,9 +737,17 @@ void amdgpu_dm_update_connector_after_detect( + mutex_lock(&dev->mode_config.mutex); + + if (sink) { +- if (aconnector->dc_sink) ++ if (aconnector->dc_sink) { + amdgpu_dm_remove_sink_from_freesync_module( + connector); ++ /* retain and release bellow are used for ++ * bump up refcount for sink because the link don't point ++ * to it anymore after disconnect so on next crtc to connector ++ * reshuffle by UMD we will get into unwanted dc_sink release ++ */ ++ if (aconnector->dc_sink != aconnector->dc_em_sink) ++ dc_sink_release(aconnector->dc_sink); ++ } + aconnector->dc_sink = sink; + amdgpu_dm_add_sink_to_freesync_module( + connector, aconnector->edid); +@@ -747,6 +755,8 @@ void amdgpu_dm_update_connector_after_detect( + amdgpu_dm_remove_sink_from_freesync_module(connector); + if (!aconnector->dc_sink) + aconnector->dc_sink = aconnector->dc_em_sink; ++ else if (aconnector->dc_sink != aconnector->dc_em_sink) ++ dc_sink_retain(aconnector->dc_sink); + } + + mutex_unlock(&dev->mode_config.mutex); +-- +2.7.4 + |