aboutsummaryrefslogtreecommitdiffstats
path: root/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2065-drm-amd-display-fix-resource-saving-missing-when-pow.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2065-drm-amd-display-fix-resource-saving-missing-when-pow.patch')
-rw-r--r--meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2065-drm-amd-display-fix-resource-saving-missing-when-pow.patch54
1 files changed, 54 insertions, 0 deletions
diff --git a/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2065-drm-amd-display-fix-resource-saving-missing-when-pow.patch b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2065-drm-amd-display-fix-resource-saving-missing-when-pow.patch
new file mode 100644
index 00000000..9ccd2058
--- /dev/null
+++ b/meta-amd-bsp/recipes-kernel/linux/linux-yocto-4.19.8/2065-drm-amd-display-fix-resource-saving-missing-when-pow.patch
@@ -0,0 +1,54 @@
+From e88fb243213c6209b0684fab6d7c8a8ea9a14c61 Mon Sep 17 00:00:00 2001
+From: "Tao.Huang" <Tao.Huang@amd.com>
+Date: Mon, 6 May 2019 16:26:54 +0800
+Subject: [PATCH 2065/2940] drm/amd/display: fix resource saving missing when
+ power state switch
+
+Signed-off-by: Tao.Huang <Tao.Huang@amd.com>
+Reviewed-by: Jun Lei <Jun.Lei@amd.com>
+Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/core/dc.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/core/dc.c b/drivers/gpu/drm/amd/display/dc/core/dc.c
+index 0536e32e60b0..edb070ca1dec 100644
+--- a/drivers/gpu/drm/amd/display/dc/core/dc.c
++++ b/drivers/gpu/drm/amd/display/dc/core/dc.c
+@@ -1941,6 +1941,12 @@ void dc_set_power_state(
+ enum dc_acpi_cm_power_state power_state)
+ {
+ struct kref refcount;
++ struct display_mode_lib *dml = kzalloc(sizeof(struct display_mode_lib),
++ GFP_KERNEL);
++
++ ASSERT(dml);
++ if (!dml)
++ return;
+
+ switch (power_state) {
+ case DC_ACPI_CM_POWER_STATE_D0:
+@@ -1957,15 +1963,20 @@ void dc_set_power_state(
+
+ /* Preserve refcount */
+ refcount = dc->current_state->refcount;
++ /* Preserve display mode lib */
++ memcpy(dml, &dc->current_state->bw_ctx.dml, sizeof(struct display_mode_lib));
++
+ dc_resource_state_destruct(dc->current_state);
+ memset(dc->current_state, 0,
+ sizeof(*dc->current_state));
+
+ dc->current_state->refcount = refcount;
++ dc->current_state->bw_ctx.dml = *dml;
+
+ break;
+ }
+
++ kfree(dml);
+ }
+
+ void dc_resume(struct dc *dc)
+--
+2.17.1
+