aboutsummaryrefslogtreecommitdiffstats
path: root/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0441-drm-amd-display-revert-dc_get_validate_context-re-en.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0441-drm-amd-display-revert-dc_get_validate_context-re-en.patch')
-rw-r--r--meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0441-drm-amd-display-revert-dc_get_validate_context-re-en.patch121
1 files changed, 0 insertions, 121 deletions
diff --git a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0441-drm-amd-display-revert-dc_get_validate_context-re-en.patch b/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0441-drm-amd-display-revert-dc_get_validate_context-re-en.patch
deleted file mode 100644
index e115a4b5..00000000
--- a/meta-v1000/recipes-kernel/linux/linux-yocto-4.14.71/0441-drm-amd-display-revert-dc_get_validate_context-re-en.patch
+++ /dev/null
@@ -1,121 +0,0 @@
-From c0c5be3a73b8bf6e70bf1694c934628bd88cc22f Mon Sep 17 00:00:00 2001
-From: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
-Date: Wed, 17 May 2017 16:56:56 -0400
-Subject: [PATCH 0441/4131] drm/amd/display: revert dc_get_validate_context
- re-entrancy fix
-
-Apply dc_get_validate_context re-entrancy fix to dc_validate_resources instead
-
-Signed-off-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@amd.com>
-Reviewed-by: Dmytro Laktyushkin <Dmytro.Laktyushkin@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 | 71 ++++++++++++++++++++++++++++----
- 1 file changed, 62 insertions(+), 9 deletions(-)
-
-diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
-index 0aafcc0..773f0ef 100644
---- a/drivers/gpu/drm/amd/display/dc/core/dc.c
-+++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
-@@ -653,6 +653,40 @@ void dc_destroy(struct dc **dc)
- *dc = NULL;
- }
-
-+static bool is_validation_required(
-+ const struct core_dc *dc,
-+ const struct dc_validation_set set[],
-+ int set_count)
-+{
-+ const struct validate_context *context = dc->current_context;
-+ int i, j;
-+
-+ if (context->stream_count != set_count)
-+ return true;
-+
-+ for (i = 0; i < set_count; i++) {
-+
-+ if (set[i].surface_count != context->stream_status[i].surface_count)
-+ return true;
-+ if (!is_stream_unchanged(DC_STREAM_TO_CORE(set[i].stream), context->streams[i]))
-+ return true;
-+
-+ for (j = 0; j < set[i].surface_count; j++) {
-+ struct dc_surface temp_surf = { 0 };
-+
-+ temp_surf = *context->stream_status[i].surfaces[j];
-+ temp_surf.clip_rect = set[i].surfaces[j]->clip_rect;
-+ temp_surf.dst_rect.x = set[i].surfaces[j]->dst_rect.x;
-+ temp_surf.dst_rect.y = set[i].surfaces[j]->dst_rect.y;
-+
-+ if (memcmp(&temp_surf, set[i].surfaces[j], sizeof(temp_surf)) != 0)
-+ return true;
-+ }
-+ }
-+
-+ return false;
-+}
-+
- struct validate_context *dc_get_validate_context(
- const struct dc *dc,
- const struct dc_validation_set set[],
-@@ -663,11 +697,16 @@ struct validate_context *dc_get_validate_context(
- struct validate_context *context;
-
- context = dm_alloc(sizeof(struct validate_context));
-- if(context == NULL)
-+ if (context == NULL)
- goto context_alloc_fail;
-
-+ if (!is_validation_required(core_dc, set, set_count)) {
-+ dc_resource_validate_ctx_copy_construct(core_dc->current_context, context);
-+ return context;
-+ }
-+
- result = core_dc->res_pool->funcs->validate_with_context(
-- core_dc, set, set_count, context, NULL);
-+ core_dc, set, set_count, context, core_dc->current_context);
-
- context_alloc_fail:
- if (result != DC_OK) {
-@@ -690,16 +729,30 @@ bool dc_validate_resources(
- const struct dc_validation_set set[],
- uint8_t set_count)
- {
-- struct validate_context *ctx;
-+ struct core_dc *core_dc = DC_TO_CORE(dc);
-+ enum dc_status result = DC_ERROR_UNEXPECTED;
-+ struct validate_context *context;
-
-- ctx = dc_get_validate_context(dc, set, set_count);
-- if (ctx) {
-- dc_resource_validate_ctx_destruct(ctx);
-- dm_free(ctx);
-- return true;
-+ context = dm_alloc(sizeof(struct validate_context));
-+ if (context == NULL)
-+ goto context_alloc_fail;
-+
-+ result = core_dc->res_pool->funcs->validate_with_context(
-+ core_dc, set, set_count, context, NULL);
-+
-+context_alloc_fail:
-+ if (result != DC_OK) {
-+ dm_logger_write(core_dc->ctx->logger, LOG_WARNING,
-+ "%s:resource validation failed, dc_status:%d\n",
-+ __func__,
-+ result);
- }
-
-- return false;
-+ dc_resource_validate_ctx_destruct(context);
-+ dm_free(context);
-+ context = NULL;
-+
-+ return result == DC_OK;
- }
-
- bool dc_validate_guaranteed(
---
-2.7.4
-