diff options
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/0617-drm-amd-display-Preserve-refcount-for-S3-case.patch')
-rw-r--r-- | common/recipes-kernel/linux/linux-yocto-4.14.71/0617-drm-amd-display-Preserve-refcount-for-S3-case.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/0617-drm-amd-display-Preserve-refcount-for-S3-case.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/0617-drm-amd-display-Preserve-refcount-for-S3-case.patch new file mode 100644 index 00000000..4b7f69bd --- /dev/null +++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/0617-drm-amd-display-Preserve-refcount-for-S3-case.patch @@ -0,0 +1,67 @@ +From b432ad86f8069bdba6b4776790386f23ee6e5755 Mon Sep 17 00:00:00 2001 +From: Andrey Grodzovsky <Andrey.Grodzovsky@amd.com> +Date: Thu, 13 Jul 2017 10:52:47 -0400 +Subject: [PATCH 0617/4131] drm/amd/display: Preserve refcount for S3 case. + +Curent_context is zerroed out for suspend, keep the refcount. +Minor code move in dc_commit_context_no_check + +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/dc/core/dc.c | 12 ++++++++---- + 1 file changed, 8 insertions(+), 4 deletions(-) + +diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c +index 8e580ac..20f4199 100644 +--- a/drivers/gpu/drm/amd/display/dc/core/dc.c ++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c +@@ -977,10 +977,10 @@ static bool dc_commit_context_no_check(struct dc *dc, struct validate_context *c + + dc_release_validate_context(core_dc->current_context); + +- dc_retain_validate_context(context); +- + core_dc->current_context = context; + ++ dc_retain_validate_context(core_dc->current_context); ++ + return (result == DC_OK); + } + +@@ -1065,8 +1065,6 @@ bool dc_commit_streams( + + result = dc_commit_context_no_check(dc, context); + +- return (result == DC_OK); +- + fail: + dc_release_validate_context(context); + +@@ -1736,6 +1734,7 @@ void dc_set_power_state( + enum dc_acpi_cm_power_state power_state) + { + struct core_dc *core_dc = DC_TO_CORE(dc); ++ int ref_count; + + switch (power_state) { + case DC_ACPI_CM_POWER_STATE_D0: +@@ -1749,8 +1748,13 @@ void dc_set_power_state( + * clean state, and dc hw programming optimizations will not + * cause any trouble. + */ ++ ++ /* Preserve refcount */ ++ ref_count = core_dc->current_context->ref_count; ++ dc_resource_validate_ctx_destruct(core_dc->current_context); + memset(core_dc->current_context, 0, + sizeof(*core_dc->current_context)); ++ core_dc->current_context->ref_count = ref_count; + + break; + } +-- +2.7.4 + |