From 57da5bf6b4a90fb40adcdde9c13d8d3183511211 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 19 Aug 2020 15:33:07 +0200 Subject: [PATCH] 4.14-stable patches added patches: drm-imx-imx-ldb-disable-both-channels-for-split-mode-in-enc-disable.patch perf-intel-pt-fix-fup-packet-state.patch --- ...annels-for-split-mode-in-enc-disable.patch | 52 +++++++++++++ .../perf-intel-pt-fix-fup-packet-state.patch | 76 +++++++++++++++++++ queue-4.14/series | 2 + 3 files changed, 130 insertions(+) create mode 100644 queue-4.14/drm-imx-imx-ldb-disable-both-channels-for-split-mode-in-enc-disable.patch create mode 100644 queue-4.14/perf-intel-pt-fix-fup-packet-state.patch diff --git a/queue-4.14/drm-imx-imx-ldb-disable-both-channels-for-split-mode-in-enc-disable.patch b/queue-4.14/drm-imx-imx-ldb-disable-both-channels-for-split-mode-in-enc-disable.patch new file mode 100644 index 00000000000..6f5f0f8b9a6 --- /dev/null +++ b/queue-4.14/drm-imx-imx-ldb-disable-both-channels-for-split-mode-in-enc-disable.patch @@ -0,0 +1,52 @@ +From 3b2a999582c467d1883716b37ffcc00178a13713 Mon Sep 17 00:00:00 2001 +From: Liu Ying +Date: Thu, 9 Jul 2020 10:28:52 +0800 +Subject: drm/imx: imx-ldb: Disable both channels for split mode in enc->disable() + +From: Liu Ying + +commit 3b2a999582c467d1883716b37ffcc00178a13713 upstream. + +Both of the two LVDS channels should be disabled for split mode +in the encoder's ->disable() callback, because they are enabled +in the encoder's ->enable() callback. + +Fixes: 6556f7f82b9c ("drm: imx: Move imx-drm driver out of staging") +Cc: Philipp Zabel +Cc: Sascha Hauer +Cc: Pengutronix Kernel Team +Cc: NXP Linux Team +Cc: +Signed-off-by: Liu Ying +Signed-off-by: Philipp Zabel +Signed-off-by: Greg Kroah-Hartman + +--- + drivers/gpu/drm/imx/imx-ldb.c | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +--- a/drivers/gpu/drm/imx/imx-ldb.c ++++ b/drivers/gpu/drm/imx/imx-ldb.c +@@ -311,18 +311,19 @@ static void imx_ldb_encoder_disable(stru + { + struct imx_ldb_channel *imx_ldb_ch = enc_to_imx_ldb_ch(encoder); + struct imx_ldb *ldb = imx_ldb_ch->ldb; ++ int dual = ldb->ldb_ctrl & LDB_SPLIT_MODE_EN; + int mux, ret; + + drm_panel_disable(imx_ldb_ch->panel); + +- if (imx_ldb_ch == &ldb->channel[0]) ++ if (imx_ldb_ch == &ldb->channel[0] || dual) + ldb->ldb_ctrl &= ~LDB_CH0_MODE_EN_MASK; +- else if (imx_ldb_ch == &ldb->channel[1]) ++ if (imx_ldb_ch == &ldb->channel[1] || dual) + ldb->ldb_ctrl &= ~LDB_CH1_MODE_EN_MASK; + + regmap_write(ldb->regmap, IOMUXC_GPR2, ldb->ldb_ctrl); + +- if (ldb->ldb_ctrl & LDB_SPLIT_MODE_EN) { ++ if (dual) { + clk_disable_unprepare(ldb->clk[0]); + clk_disable_unprepare(ldb->clk[1]); + } diff --git a/queue-4.14/perf-intel-pt-fix-fup-packet-state.patch b/queue-4.14/perf-intel-pt-fix-fup-packet-state.patch new file mode 100644 index 00000000000..dc1b476c037 --- /dev/null +++ b/queue-4.14/perf-intel-pt-fix-fup-packet-state.patch @@ -0,0 +1,76 @@ +From 401136bb084fd021acd9f8c51b52fe0a25e326b2 Mon Sep 17 00:00:00 2001 +From: Adrian Hunter +Date: Fri, 10 Jul 2020 18:10:53 +0300 +Subject: perf intel-pt: Fix FUP packet state + +From: Adrian Hunter + +commit 401136bb084fd021acd9f8c51b52fe0a25e326b2 upstream. + +While walking code towards a FUP ip, the packet state is +INTEL_PT_STATE_FUP or INTEL_PT_STATE_FUP_NO_TIP. That was mishandled +resulting in the state becoming INTEL_PT_STATE_IN_SYNC prematurely. The +result was an occasional lost EXSTOP event. + +Signed-off-by: Adrian Hunter +Reviewed-by: Andi Kleen +Cc: Jiri Olsa +Cc: stable@vger.kernel.org +Link: http://lore.kernel.org/lkml/20200710151104.15137-2-adrian.hunter@intel.com +Signed-off-by: Arnaldo Carvalho de Melo +Signed-off-by: Greg Kroah-Hartman + +--- + tools/perf/util/intel-pt-decoder/intel-pt-decoder.c | 21 ++++++-------------- + 1 file changed, 7 insertions(+), 14 deletions(-) + +--- a/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c ++++ b/tools/perf/util/intel-pt-decoder/intel-pt-decoder.c +@@ -1129,6 +1129,7 @@ static int intel_pt_walk_fup(struct inte + return 0; + if (err == -EAGAIN || + intel_pt_fup_with_nlip(decoder, &intel_pt_insn, ip, err)) { ++ decoder->pkt_state = INTEL_PT_STATE_IN_SYNC; + if (intel_pt_fup_event(decoder)) + return 0; + return -EAGAIN; +@@ -1780,17 +1781,13 @@ next: + } + if (decoder->set_fup_mwait) + no_tip = true; ++ if (no_tip) ++ decoder->pkt_state = INTEL_PT_STATE_FUP_NO_TIP; ++ else ++ decoder->pkt_state = INTEL_PT_STATE_FUP; + err = intel_pt_walk_fup(decoder); +- if (err != -EAGAIN) { +- if (err) +- return err; +- if (no_tip) +- decoder->pkt_state = +- INTEL_PT_STATE_FUP_NO_TIP; +- else +- decoder->pkt_state = INTEL_PT_STATE_FUP; +- return 0; +- } ++ if (err != -EAGAIN) ++ return err; + if (no_tip) { + no_tip = false; + break; +@@ -2375,15 +2372,11 @@ const struct intel_pt_state *intel_pt_de + err = intel_pt_walk_tip(decoder); + break; + case INTEL_PT_STATE_FUP: +- decoder->pkt_state = INTEL_PT_STATE_IN_SYNC; + err = intel_pt_walk_fup(decoder); + if (err == -EAGAIN) + err = intel_pt_walk_fup_tip(decoder); +- else if (!err) +- decoder->pkt_state = INTEL_PT_STATE_FUP; + break; + case INTEL_PT_STATE_FUP_NO_TIP: +- decoder->pkt_state = INTEL_PT_STATE_IN_SYNC; + err = intel_pt_walk_fup(decoder); + if (err == -EAGAIN) + err = intel_pt_walk_trace(decoder); diff --git a/queue-4.14/series b/queue-4.14/series index 5ef30f1c0f0..7edf0e651f9 100644 --- a/queue-4.14/series +++ b/queue-4.14/series @@ -190,3 +190,5 @@ watchdog-f71808e_wdt-indicate-wdiof_cardreset-support-in-watchdog_info.options.p watchdog-f71808e_wdt-remove-use-of-wrong-watchdog_info-option.patch watchdog-f71808e_wdt-clear-watchdog-timeout-occurred-flag.patch pseries-fix-64-bit-logical-memory-block-panic.patch +perf-intel-pt-fix-fup-packet-state.patch +drm-imx-imx-ldb-disable-both-channels-for-split-mode-in-enc-disable.patch -- 2.47.3