aboutsummaryrefslogtreecommitdiffstats
path: root/common/recipes-kernel/linux/linux-yocto-4.14.71/4534-drm-amd-display-replace-msleep-with-udelay-in-fbc-pa.patch
diff options
context:
space:
mode:
Diffstat (limited to 'common/recipes-kernel/linux/linux-yocto-4.14.71/4534-drm-amd-display-replace-msleep-with-udelay-in-fbc-pa.patch')
-rw-r--r--common/recipes-kernel/linux/linux-yocto-4.14.71/4534-drm-amd-display-replace-msleep-with-udelay-in-fbc-pa.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/common/recipes-kernel/linux/linux-yocto-4.14.71/4534-drm-amd-display-replace-msleep-with-udelay-in-fbc-pa.patch b/common/recipes-kernel/linux/linux-yocto-4.14.71/4534-drm-amd-display-replace-msleep-with-udelay-in-fbc-pa.patch
new file mode 100644
index 00000000..9253aa6e
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-4.14.71/4534-drm-amd-display-replace-msleep-with-udelay-in-fbc-pa.patch
@@ -0,0 +1,55 @@
+From 5bacec606d24bf99af3a58f4be396fe092e23308 Mon Sep 17 00:00:00 2001
+From: Roman Li <Roman.Li@amd.com>
+Date: Thu, 3 May 2018 13:29:42 -0400
+Subject: [PATCH 4534/5725] drm/amd/display: replace msleep with udelay in fbc
+ path
+
+FBC enabling and disabling path has msleep which leads to
+BUG hit when called in atomic context, hence this patch
+replaces msleeps with udelays appropriately.
+
+Signed-off-by: Shirish S <shirish.s@amd.com>
+Signed-off-by: Roman Li <Roman.Li@amd.com>
+Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
+Acked-by: Harry Wentland <harry.wentland@amd.com>
+---
+ drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c b/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
+index 9150d26..e2994d3 100644
+--- a/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
++++ b/drivers/gpu/drm/amd/display/dc/dce110/dce110_compressor.c
+@@ -121,10 +121,10 @@ static void reset_lb_on_vblank(struct dc_context *ctx)
+ frame_count = dm_read_reg(ctx, mmCRTC_STATUS_FRAME_COUNT);
+
+
+- for (retry = 100; retry > 0; retry--) {
++ for (retry = 10000; retry > 0; retry--) {
+ if (frame_count != dm_read_reg(ctx, mmCRTC_STATUS_FRAME_COUNT))
+ break;
+- msleep(1);
++ udelay(10);
+ }
+ if (!retry)
+ dm_error("Frame count did not increase for 100ms.\n");
+@@ -147,14 +147,14 @@ static void wait_for_fbc_state_changed(
+ uint32_t addr = mmFBC_STATUS;
+ uint32_t value;
+
+- while (counter < 10) {
++ while (counter < 1000) {
+ value = dm_read_reg(cp110->base.ctx, addr);
+ if (get_reg_field_value(
+ value,
+ FBC_STATUS,
+ FBC_ENABLE_STATUS) == enabled)
+ break;
+- msleep(10);
++ udelay(100);
+ counter++;
+ }
+
+--
+2.7.4
+