diff options
Diffstat (limited to 'meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0928-drm-amd-dal-fix-issue-when-removing-sinks-where-arra.patch')
-rw-r--r-- | meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0928-drm-amd-dal-fix-issue-when-removing-sinks-where-arra.patch | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0928-drm-amd-dal-fix-issue-when-removing-sinks-where-arra.patch b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0928-drm-amd-dal-fix-issue-when-removing-sinks-where-arra.patch new file mode 100644 index 00000000..9c976962 --- /dev/null +++ b/meta-amdfalconx86/recipes-kernel/linux/linux-yocto/0928-drm-amd-dal-fix-issue-when-removing-sinks-where-arra.patch @@ -0,0 +1,49 @@ +From 457cadf4737f7897b50f82e2b07989c6c63f99f5 Mon Sep 17 00:00:00 2001 +From: Mykola Lysenko <Mykola.Lysenko@amd.com> +Date: Wed, 9 Dec 2015 19:20:12 +0800 +Subject: [PATCH 0928/1050] drm/amd/dal: fix issue when removing sinks where + array index is incorrect + +Change-Id: Ib322c6a45ab4eabf5ac5ceb99715851675bc2c05 +Signed-off-by: Harry Wentland <harry.wentland@amd.com> +Acked-by: Harry Wentland<harry.wentland@amd.com> +--- + drivers/gpu/drm/amd/dal/dc/core/dc_link.c | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c +index e7a12e0..fe36786 100644 +--- a/drivers/gpu/drm/amd/dal/dc/core/dc_link.c ++++ b/drivers/gpu/drm/amd/dal/dc/core/dc_link.c +@@ -357,10 +357,13 @@ static bool is_dp_active_dongle(enum display_dongle_type dongle_type) + + static void link_disconnect_all_sinks(struct core_link *link) + { +- int i; +- +- for (i = 0; i < link->public.sink_count; i++) +- dc_link_remove_sink(&link->public, link->public.sink[i]); ++ /* ++ * as sink_count changed inside dc_link_remove_sink, we should not ++ * use it for range check for loop, because half of sinks will not ++ * be removed ++ */ ++ while (link->public.sink_count) ++ dc_link_remove_sink(&link->public, link->public.sink[0]); + + link->dpcd_sink_count = 0; + } +@@ -516,7 +519,9 @@ void dc_link_detect(const struct dc_link *dc_link) + * ->sink = NULL + * TODO: s3 resume check*/ + +- if (dc_helpers_dp_mst_start_top_mgr(link->ctx, &link->public)) { ++ if (dc_helpers_dp_mst_start_top_mgr( ++ link->ctx, ++ &link->public)) { + return; + } else { + /* MST not supported */ +-- +1.9.1 + |