* [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling
@ 2020-06-10 18:31 Imre Deak
2020-06-10 18:31 ` [Intel-gfx] [PATCH 2/2] drm/i915/dp_mst: Clear ACT sent flag before waiting for it Imre Deak
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Imre Deak @ 2020-06-10 18:31 UTC (permalink / raw)
To: intel-gfx
On TGL+ the master transcoder's DP_TP_STATUS register should be used for
the MST ACT status handling, so make sure we do that even in case of
mulitple streams.
This fixes an ACT timeout problem during disabling when using multiple
streams. Not sure why this was not a problem during enabling (even the
slave's DP_TP_STATUS signaled ACT correctly), but following the spec
works in that case too, so let's do that.
There is one more place using DP_TP_STATUS, FEC enabling, but I haven't
found in BSpec which register to use in that case, so I leave the
clarification of that for later.
BSpec: 49190
Signed-off-by: Imre Deak <imre.deak@intel.com>
---
drivers/gpu/drm/i915/display/intel_dp_mst.c | 47 +++++++++++++++++----
1 file changed, 39 insertions(+), 8 deletions(-)
diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c
index d18b406f2a7d..1c3654a117a9 100644
--- a/drivers/gpu/drm/i915/display/intel_dp_mst.c
+++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c
@@ -316,6 +316,40 @@ intel_dp_mst_atomic_check(struct drm_connector *connector,
return ret;
}
+static i915_reg_t
+master_dp_tp_status_reg(const struct intel_crtc_state *crtc_state,
+ const struct intel_dp *intel_dp)
+{
+ struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev);
+
+ if (INTEL_GEN(dev_priv) >= 12)
+ return TGL_DP_TP_STATUS(crtc_state->mst_master_transcoder);
+
+ return intel_dp->regs.dp_tp_status;
+}
+
+static void clear_act_sent(const struct intel_crtc_state *crtc_state,
+ const struct intel_dp *intel_dp)
+{
+ struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
+ i915_reg_t dp_tp_status_reg =
+ master_dp_tp_status_reg(crtc_state, intel_dp);
+
+ intel_de_write(i915, dp_tp_status_reg,
+ intel_de_read(i915, dp_tp_status_reg));
+}
+
+static bool wait_for_act_sent(const struct intel_crtc_state *crtc_state,
+ const struct intel_dp *intel_dp)
+{
+ struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev);
+ i915_reg_t dp_tp_status_reg =
+ master_dp_tp_status_reg(crtc_state, intel_dp);
+
+ return intel_de_wait_for_set(i915, dp_tp_status_reg,
+ DP_TP_STATUS_ACT_SENT, 1) == 0;
+}
+
static void intel_mst_disable_dp(struct intel_atomic_state *state,
struct intel_encoder *encoder,
const struct intel_crtc_state *old_crtc_state,
@@ -376,8 +410,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state,
TRANS_DDI_FUNC_CTL(old_crtc_state->cpu_transcoder),
val);
- if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status,
- DP_TP_STATUS_ACT_SENT, 1))
+ if (!wait_for_act_sent(old_crtc_state, intel_dp))
drm_err(&dev_priv->drm,
"Timed out waiting for ACT sent when disabling\n");
drm_dp_check_act_status(&intel_dp->mst_mgr);
@@ -443,7 +476,6 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state,
struct intel_connector *connector =
to_intel_connector(conn_state->connector);
int ret;
- u32 temp;
bool first_mst_stream;
/* MST encoders are bound to a crtc, not to a connector,
@@ -476,8 +508,8 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state,
drm_err(&dev_priv->drm, "failed to allocate vcpi\n");
intel_dp->active_mst_links++;
- temp = intel_de_read(dev_priv, intel_dp->regs.dp_tp_status);
- intel_de_write(dev_priv, intel_dp->regs.dp_tp_status, temp);
+
+ clear_act_sent(pipe_config, intel_dp);
ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr);
@@ -513,9 +545,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state,
drm_dbg_kms(&dev_priv->drm, "active links %d\n",
intel_dp->active_mst_links);
- if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status,
- DP_TP_STATUS_ACT_SENT, 1))
- drm_err(&dev_priv->drm, "Timed out waiting for ACT sent\n");
+ if (!wait_for_act_sent(pipe_config, intel_dp))
+ drm_err(&dev_priv->drm, "Timed out waiting for ACT sent when enabling\n");
drm_dp_check_act_status(&intel_dp->mst_mgr);
--
2.23.1
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx
^ permalink raw reply related [flat|nested] 8+ messages in thread* [Intel-gfx] [PATCH 2/2] drm/i915/dp_mst: Clear ACT sent flag before waiting for it 2020-06-10 18:31 [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling Imre Deak @ 2020-06-10 18:31 ` Imre Deak 2020-06-10 19:22 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915/tgl+: Fix DP MST ACT status handling Patchwork ` (3 subsequent siblings) 4 siblings, 0 replies; 8+ messages in thread From: Imre Deak @ 2020-06-10 18:31 UTC (permalink / raw) To: intel-gfx We do this during enabling, but not during disabling. BSpec doesn't require this explicitly in either case, however based on my tests nothing clears it after it gets set, so let's do this during disabling as well. Signed-off-by: Imre Deak <imre.deak@intel.com> --- drivers/gpu/drm/i915/display/intel_dp_mst.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c index 1c3654a117a9..566fe469940d 100644 --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c @@ -368,6 +368,8 @@ static void intel_mst_disable_dp(struct intel_atomic_state *state, drm_dp_mst_reset_vcpi_slots(&intel_dp->mst_mgr, connector->port); + clear_act_sent(old_crtc_state, intel_dp); + ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr); if (ret) { drm_dbg_kms(&i915->drm, "failed to update payload %d\n", ret); -- 2.23.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply related [flat|nested] 8+ messages in thread
* [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915/tgl+: Fix DP MST ACT status handling 2020-06-10 18:31 [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling Imre Deak 2020-06-10 18:31 ` [Intel-gfx] [PATCH 2/2] drm/i915/dp_mst: Clear ACT sent flag before waiting for it Imre Deak @ 2020-06-10 19:22 ` Patchwork 2020-06-11 11:00 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork ` (2 subsequent siblings) 4 siblings, 0 replies; 8+ messages in thread From: Patchwork @ 2020-06-10 19:22 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx == Series Details == Series: series starting with [1/2] drm/i915/tgl+: Fix DP MST ACT status handling URL : https://patchwork.freedesktop.org/series/78193/ State : success == Summary == CI Bug Log - changes from CI_DRM_8611 -> Patchwork_17921 ==================================================== Summary ------- **SUCCESS** No regressions found. External URL: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/index.html Known issues ------------ Here are the changes found in Patchwork_17921 that come from known issues: ### IGT changes ### #### Issues hit #### * igt@i915_pm_rpm@basic-pci-d3-state: - fi-bsw-kefka: [PASS][1] -> [DMESG-WARN][2] ([i915#1982]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/fi-bsw-kefka/igt@i915_pm_rpm@basic-pci-d3-state.html * igt@kms_chamelium@hdmi-hpd-fast: - fi-kbl-7500u: [PASS][3] -> [FAIL][4] ([i915#227]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/fi-kbl-7500u/igt@kms_chamelium@hdmi-hpd-fast.html * igt@kms_cursor_legacy@basic-flip-after-cursor-legacy: - fi-icl-u2: [PASS][5] -> [DMESG-WARN][6] ([i915#1982]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/fi-icl-u2/igt@kms_cursor_legacy@basic-flip-after-cursor-legacy.html #### Possible fixes #### * igt@i915_pm_backlight@basic-brightness: - fi-whl-u: [DMESG-WARN][7] ([i915#95]) -> [PASS][8] [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/fi-whl-u/igt@i915_pm_backlight@basic-brightness.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/fi-whl-u/igt@i915_pm_backlight@basic-brightness.html * igt@i915_pm_rpm@module-reload: - fi-cml-s: [DMESG-WARN][9] ([i915#1982]) -> [PASS][10] [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/fi-cml-s/igt@i915_pm_rpm@module-reload.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/fi-cml-s/igt@i915_pm_rpm@module-reload.html * igt@kms_busy@basic@flip: - fi-kbl-x1275: [DMESG-WARN][11] ([i915#62] / [i915#92] / [i915#95]) -> [PASS][12] [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/fi-kbl-x1275/igt@kms_busy@basic@flip.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/fi-kbl-x1275/igt@kms_busy@basic@flip.html #### Warnings #### * igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy: - fi-kbl-x1275: [DMESG-WARN][13] ([i915#62] / [i915#92]) -> [DMESG-WARN][14] ([i915#62] / [i915#92] / [i915#95]) +7 similar issues [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/fi-kbl-x1275/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/fi-kbl-x1275/igt@kms_cursor_legacy@basic-busy-flip-before-cursor-legacy.html * igt@kms_force_connector_basic@force-edid: - fi-kbl-x1275: [DMESG-WARN][15] ([i915#62] / [i915#92] / [i915#95]) -> [DMESG-WARN][16] ([i915#62] / [i915#92]) +5 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/fi-kbl-x1275/igt@kms_force_connector_basic@force-edid.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/fi-kbl-x1275/igt@kms_force_connector_basic@force-edid.html {name}: This element is suppressed. This means it is ignored when computing the status of the difference (SUCCESS, WARNING, or FAILURE). [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#227]: https://gitlab.freedesktop.org/drm/intel/issues/227 [i915#62]: https://gitlab.freedesktop.org/drm/intel/issues/62 [i915#92]: https://gitlab.freedesktop.org/drm/intel/issues/92 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 Participating hosts (48 -> 42) ------------------------------ Additional (1): fi-tgl-u2 Missing (7): fi-ilk-m540 fi-hsw-4200u fi-byt-squawks fi-bsw-cyan fi-ctg-p8600 fi-byt-clapper fi-bdw-samus Build changes ------------- * Linux: CI_DRM_8611 -> Patchwork_17921 CI-20190529: 20190529 CI_DRM_8611: b87354483fa40fef86da19ade9bfe9349f0cf6d5 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5702: d16ad07e7f2a028e14d61f570931c87fa5ce404c @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_17921: 77a732d46697f75e67997a7b5f8a94b21ab8e556 @ git://anongit.freedesktop.org/gfx-ci/linux == Linux commits == 77a732d46697 drm/i915/dp_mst: Clear ACT sent flag before waiting for it 34a2e794d60b drm/i915/tgl+: Fix DP MST ACT status handling == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/index.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* [Intel-gfx] ✓ Fi.CI.IGT: success for series starting with [1/2] drm/i915/tgl+: Fix DP MST ACT status handling 2020-06-10 18:31 [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling Imre Deak 2020-06-10 18:31 ` [Intel-gfx] [PATCH 2/2] drm/i915/dp_mst: Clear ACT sent flag before waiting for it Imre Deak 2020-06-10 19:22 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915/tgl+: Fix DP MST ACT status handling Patchwork @ 2020-06-11 11:00 ` Patchwork 2020-06-11 15:38 ` [Intel-gfx] [PATCH 1/2] " Ville Syrjälä 2020-06-11 15:39 ` Ville Syrjälä 4 siblings, 0 replies; 8+ messages in thread From: Patchwork @ 2020-06-11 11:00 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx == Series Details == Series: series starting with [1/2] drm/i915/tgl+: Fix DP MST ACT status handling URL : https://patchwork.freedesktop.org/series/78193/ State : success == Summary == CI Bug Log - changes from CI_DRM_8611_full -> Patchwork_17921_full ==================================================== Summary ------- **SUCCESS** No regressions found. Known issues ------------ Here are the changes found in Patchwork_17921_full that come from known issues: ### IGT changes ### #### Issues hit #### * igt@gem_ctx_persistence@legacy-engines-mixed-process@blt: - shard-skl: [PASS][1] -> [FAIL][2] ([i915#1528]) [1]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl7/igt@gem_ctx_persistence@legacy-engines-mixed-process@blt.html [2]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl6/igt@gem_ctx_persistence@legacy-engines-mixed-process@blt.html * igt@gem_exec_whisper@basic-queues-forked-all: - shard-glk: [PASS][3] -> [DMESG-WARN][4] ([i915#118] / [i915#95]) [3]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-glk1/igt@gem_exec_whisper@basic-queues-forked-all.html [4]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-glk7/igt@gem_exec_whisper@basic-queues-forked-all.html * igt@gen9_exec_parse@allowed-all: - shard-glk: [PASS][5] -> [DMESG-WARN][6] ([i915#1436] / [i915#716]) [5]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-glk9/igt@gen9_exec_parse@allowed-all.html [6]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-glk1/igt@gen9_exec_parse@allowed-all.html * igt@i915_module_load@reload: - shard-tglb: [PASS][7] -> [DMESG-WARN][8] ([i915#402]) +1 similar issue [7]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-tglb3/igt@i915_module_load@reload.html [8]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-tglb6/igt@i915_module_load@reload.html * igt@kms_big_fb@linear-32bpp-rotate-180: - shard-apl: [PASS][9] -> [DMESG-WARN][10] ([i915#1982]) +1 similar issue [9]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-apl3/igt@kms_big_fb@linear-32bpp-rotate-180.html [10]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-apl8/igt@kms_big_fb@linear-32bpp-rotate-180.html * igt@kms_big_fb@linear-64bpp-rotate-180: - shard-glk: [PASS][11] -> [DMESG-FAIL][12] ([i915#118] / [i915#95]) +1 similar issue [11]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-glk4/igt@kms_big_fb@linear-64bpp-rotate-180.html [12]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-glk8/igt@kms_big_fb@linear-64bpp-rotate-180.html * igt@kms_cursor_edge_walk@pipe-a-128x128-bottom-edge: - shard-kbl: [PASS][13] -> [DMESG-WARN][14] ([i915#93] / [i915#95]) [13]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl3/igt@kms_cursor_edge_walk@pipe-a-128x128-bottom-edge.html [14]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl1/igt@kms_cursor_edge_walk@pipe-a-128x128-bottom-edge.html * igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic: - shard-apl: [PASS][15] -> [DMESG-WARN][16] ([i915#95]) +26 similar issues [15]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-apl3/igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic.html [16]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-apl7/igt@kms_cursor_legacy@long-nonblocking-modeset-vs-cursor-atomic.html * igt@kms_flip@flip-vs-suspend-interruptible@c-dp1: - shard-apl: [PASS][17] -> [DMESG-WARN][18] ([i915#180]) +4 similar issues [17]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-apl2/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html [18]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-apl8/igt@kms_flip@flip-vs-suspend-interruptible@c-dp1.html * igt@kms_flip@flip-vs-suspend@c-dp1: - shard-kbl: [PASS][19] -> [DMESG-WARN][20] ([i915#180]) +4 similar issues [19]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl2/igt@kms_flip@flip-vs-suspend@c-dp1.html [20]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl7/igt@kms_flip@flip-vs-suspend@c-dp1.html * igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw: - shard-glk: [PASS][21] -> [INCOMPLETE][22] ([i915#58] / [k.org#198133]) [21]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-glk7/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html [22]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-glk5/igt@kms_frontbuffer_tracking@fbc-1p-pri-indfb-multidraw.html * igt@kms_frontbuffer_tracking@psr-suspend: - shard-skl: [PASS][23] -> [INCOMPLETE][24] ([i915#123] / [i915#69]) [23]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl3/igt@kms_frontbuffer_tracking@psr-suspend.html [24]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl10/igt@kms_frontbuffer_tracking@psr-suspend.html * igt@kms_hdr@bpc-switch-suspend: - shard-skl: [PASS][25] -> [FAIL][26] ([i915#1188]) [25]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl6/igt@kms_hdr@bpc-switch-suspend.html [26]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl7/igt@kms_hdr@bpc-switch-suspend.html * igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes: - shard-kbl: [PASS][27] -> [INCOMPLETE][28] ([i915#155] / [i915#648]) [27]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl2/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html [28]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl7/igt@kms_plane@plane-panning-bottom-right-suspend-pipe-a-planes.html * igt@kms_plane_multiple@atomic-pipe-c-tiling-y: - shard-skl: [PASS][29] -> [DMESG-WARN][30] ([i915#1982]) +9 similar issues [29]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl1/igt@kms_plane_multiple@atomic-pipe-c-tiling-y.html [30]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl2/igt@kms_plane_multiple@atomic-pipe-c-tiling-y.html * igt@kms_psr@psr2_sprite_mmap_gtt: - shard-iclb: [PASS][31] -> [SKIP][32] ([fdo#109441]) +2 similar issues [31]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-iclb2/igt@kms_psr@psr2_sprite_mmap_gtt.html [32]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-iclb1/igt@kms_psr@psr2_sprite_mmap_gtt.html * igt@kms_vblank@pipe-a-ts-continuation-suspend: - shard-skl: [PASS][33] -> [INCOMPLETE][34] ([i915#69]) [33]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl9/igt@kms_vblank@pipe-a-ts-continuation-suspend.html [34]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl8/igt@kms_vblank@pipe-a-ts-continuation-suspend.html #### Possible fixes #### * igt@gem_exec_balancer@sliced: - shard-tglb: [TIMEOUT][35] ([i915#1936]) -> [PASS][36] [35]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-tglb5/igt@gem_exec_balancer@sliced.html [36]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-tglb8/igt@gem_exec_balancer@sliced.html * igt@gem_exec_reloc@basic-wc-cpu-active: - shard-apl: [DMESG-WARN][37] ([i915#95]) -> [PASS][38] +18 similar issues [37]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-apl4/igt@gem_exec_reloc@basic-wc-cpu-active.html [38]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-apl3/igt@gem_exec_reloc@basic-wc-cpu-active.html * igt@i915_suspend@debugfs-reader: - shard-kbl: [FAIL][39] ([fdo#103375]) -> [PASS][40] [39]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl7/igt@i915_suspend@debugfs-reader.html [40]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl6/igt@i915_suspend@debugfs-reader.html * igt@kms_big_fb@linear-8bpp-rotate-180: - shard-apl: [DMESG-WARN][41] ([i915#1982]) -> [PASS][42] [41]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-apl7/igt@kms_big_fb@linear-8bpp-rotate-180.html [42]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-apl8/igt@kms_big_fb@linear-8bpp-rotate-180.html * igt@kms_big_fb@y-tiled-64bpp-rotate-180: - shard-glk: [DMESG-FAIL][43] ([i915#118] / [i915#95]) -> [PASS][44] +1 similar issue [43]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-glk8/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html [44]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-glk9/igt@kms_big_fb@y-tiled-64bpp-rotate-180.html * igt@kms_cursor_legacy@flip-vs-cursor-crc-atomic: - shard-skl: [DMESG-WARN][45] ([i915#1982]) -> [PASS][46] +10 similar issues [45]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl2/igt@kms_cursor_legacy@flip-vs-cursor-crc-atomic.html [46]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl3/igt@kms_cursor_legacy@flip-vs-cursor-crc-atomic.html * igt@kms_cursor_legacy@pipe-b-torture-move: - shard-tglb: [DMESG-WARN][47] ([i915#128]) -> [PASS][48] [47]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-tglb2/igt@kms_cursor_legacy@pipe-b-torture-move.html [48]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-tglb7/igt@kms_cursor_legacy@pipe-b-torture-move.html * igt@kms_flip@busy-flip@b-edp1: - shard-skl: [FAIL][49] ([i915#275]) -> [PASS][50] [49]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl5/igt@kms_flip@busy-flip@b-edp1.html [50]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl9/igt@kms_flip@busy-flip@b-edp1.html * igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1: - shard-iclb: [FAIL][51] ([i915#79]) -> [PASS][52] [51]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-iclb7/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html [52]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-iclb2/igt@kms_flip@flip-vs-expired-vblank-interruptible@c-edp1.html * igt@kms_flip@flip-vs-suspend-interruptible@a-dp1: - shard-kbl: [DMESG-WARN][53] ([i915#180]) -> [PASS][54] +2 similar issues [53]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl6/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html [54]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl4/igt@kms_flip@flip-vs-suspend-interruptible@a-dp1.html * igt@kms_flip@plain-flip-ts-check@a-dp1: - shard-kbl: [DMESG-WARN][55] ([i915#1982]) -> [PASS][56] +1 similar issue [55]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl4/igt@kms_flip@plain-flip-ts-check@a-dp1.html [56]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl6/igt@kms_flip@plain-flip-ts-check@a-dp1.html * igt@kms_hdr@bpc-switch: - shard-skl: [FAIL][57] ([i915#1188]) -> [PASS][58] [57]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl4/igt@kms_hdr@bpc-switch.html [58]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl4/igt@kms_hdr@bpc-switch.html * igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c: - shard-glk: [DMESG-WARN][59] ([i915#1982]) -> [PASS][60] [59]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-glk8/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c.html [60]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-glk6/igt@kms_pipe_crc_basic@suspend-read-crc-pipe-c.html * igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min: - shard-skl: [FAIL][61] ([fdo#108145] / [i915#265]) -> [PASS][62] [61]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-skl9/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min.html [62]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-skl4/igt@kms_plane_alpha_blend@pipe-b-constant-alpha-min.html * igt@kms_psr@no_drrs: - shard-iclb: [FAIL][63] ([i915#173]) -> [PASS][64] [63]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-iclb1/igt@kms_psr@no_drrs.html [64]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-iclb5/igt@kms_psr@no_drrs.html * igt@kms_psr@psr2_sprite_plane_move: - shard-iclb: [SKIP][65] ([fdo#109441]) -> [PASS][66] +2 similar issues [65]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-iclb1/igt@kms_psr@psr2_sprite_plane_move.html [66]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-iclb2/igt@kms_psr@psr2_sprite_plane_move.html * igt@perf_pmu@module-unload: - shard-iclb: [DMESG-WARN][67] ([i915#1982]) -> [PASS][68] [67]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-iclb5/igt@perf_pmu@module-unload.html [68]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-iclb5/igt@perf_pmu@module-unload.html * igt@perf_pmu@other-init-3: - shard-tglb: [DMESG-WARN][69] ([i915#402]) -> [PASS][70] +1 similar issue [69]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-tglb6/igt@perf_pmu@other-init-3.html [70]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-tglb6/igt@perf_pmu@other-init-3.html * igt@syncobj_wait@single-wait-all-for-submit-signaled: - shard-tglb: [TIMEOUT][71] -> [PASS][72] +2 similar issues [71]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-tglb5/igt@syncobj_wait@single-wait-all-for-submit-signaled.html [72]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-tglb8/igt@syncobj_wait@single-wait-all-for-submit-signaled.html #### Warnings #### * igt@gem_exec_reloc@basic-concurrent16: - shard-glk: [TIMEOUT][73] ([i915#1958]) -> [INCOMPLETE][74] ([i915#1958] / [i915#58] / [k.org#198133]) [73]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-glk5/igt@gem_exec_reloc@basic-concurrent16.html [74]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-glk4/igt@gem_exec_reloc@basic-concurrent16.html * igt@i915_pm_rc6_residency@rc6-idle: - shard-iclb: [FAIL][75] ([i915#1515]) -> [WARN][76] ([i915#1515]) [75]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-iclb2/igt@i915_pm_rc6_residency@rc6-idle.html [76]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-iclb1/igt@i915_pm_rc6_residency@rc6-idle.html * igt@i915_suspend@forcewake: - shard-kbl: [DMESG-WARN][77] ([i915#93] / [i915#95]) -> [DMESG-WARN][78] ([i915#180] / [i915#93] / [i915#95]) +1 similar issue [77]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl7/igt@i915_suspend@forcewake.html [78]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl1/igt@i915_suspend@forcewake.html * igt@kms_content_protection@atomic: - shard-apl: [TIMEOUT][79] ([i915#1319] / [i915#1635]) -> [FAIL][80] ([fdo#110321] / [fdo#110336]) [79]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-apl7/igt@kms_content_protection@atomic.html [80]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-apl7/igt@kms_content_protection@atomic.html * igt@kms_content_protection@lic: - shard-kbl: [TIMEOUT][81] ([i915#1319] / [i915#1958]) -> [TIMEOUT][82] ([i915#1319]) [81]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl4/igt@kms_content_protection@lic.html [82]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl6/igt@kms_content_protection@lic.html * igt@kms_content_protection@srm: - shard-kbl: [TIMEOUT][83] ([i915#1319] / [i915#1958]) -> [DMESG-FAIL][84] ([fdo#110321] / [i915#95]) [83]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-kbl4/igt@kms_content_protection@srm.html [84]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-kbl2/igt@kms_content_protection@srm.html - shard-apl: [DMESG-FAIL][85] ([fdo#110321] / [i915#95]) -> [TIMEOUT][86] ([i915#1319]) [85]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-apl4/igt@kms_content_protection@srm.html [86]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-apl2/igt@kms_content_protection@srm.html * igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max: - shard-apl: [FAIL][87] ([fdo#108145] / [i915#265]) -> [DMESG-FAIL][88] ([fdo#108145] / [i915#95]) [87]: https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_8611/shard-apl4/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html [88]: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/shard-apl2/igt@kms_plane_alpha_blend@pipe-a-constant-alpha-max.html [fdo#103375]: https://bugs.freedesktop.org/show_bug.cgi?id=103375 [fdo#108145]: https://bugs.freedesktop.org/show_bug.cgi?id=108145 [fdo#109441]: https://bugs.freedesktop.org/show_bug.cgi?id=109441 [fdo#110321]: https://bugs.freedesktop.org/show_bug.cgi?id=110321 [fdo#110336]: https://bugs.freedesktop.org/show_bug.cgi?id=110336 [i915#118]: https://gitlab.freedesktop.org/drm/intel/issues/118 [i915#1188]: https://gitlab.freedesktop.org/drm/intel/issues/1188 [i915#123]: https://gitlab.freedesktop.org/drm/intel/issues/123 [i915#128]: https://gitlab.freedesktop.org/drm/intel/issues/128 [i915#1319]: https://gitlab.freedesktop.org/drm/intel/issues/1319 [i915#1436]: https://gitlab.freedesktop.org/drm/intel/issues/1436 [i915#1515]: https://gitlab.freedesktop.org/drm/intel/issues/1515 [i915#1528]: https://gitlab.freedesktop.org/drm/intel/issues/1528 [i915#155]: https://gitlab.freedesktop.org/drm/intel/issues/155 [i915#1635]: https://gitlab.freedesktop.org/drm/intel/issues/1635 [i915#173]: https://gitlab.freedesktop.org/drm/intel/issues/173 [i915#180]: https://gitlab.freedesktop.org/drm/intel/issues/180 [i915#1936]: https://gitlab.freedesktop.org/drm/intel/issues/1936 [i915#1958]: https://gitlab.freedesktop.org/drm/intel/issues/1958 [i915#1982]: https://gitlab.freedesktop.org/drm/intel/issues/1982 [i915#265]: https://gitlab.freedesktop.org/drm/intel/issues/265 [i915#275]: https://gitlab.freedesktop.org/drm/intel/issues/275 [i915#402]: https://gitlab.freedesktop.org/drm/intel/issues/402 [i915#58]: https://gitlab.freedesktop.org/drm/intel/issues/58 [i915#648]: https://gitlab.freedesktop.org/drm/intel/issues/648 [i915#69]: https://gitlab.freedesktop.org/drm/intel/issues/69 [i915#716]: https://gitlab.freedesktop.org/drm/intel/issues/716 [i915#79]: https://gitlab.freedesktop.org/drm/intel/issues/79 [i915#93]: https://gitlab.freedesktop.org/drm/intel/issues/93 [i915#95]: https://gitlab.freedesktop.org/drm/intel/issues/95 [k.org#198133]: https://bugzilla.kernel.org/show_bug.cgi?id=198133 Participating hosts (11 -> 11) ------------------------------ No changes in participating hosts Build changes ------------- * Linux: CI_DRM_8611 -> Patchwork_17921 CI-20190529: 20190529 CI_DRM_8611: b87354483fa40fef86da19ade9bfe9349f0cf6d5 @ git://anongit.freedesktop.org/gfx-ci/linux IGT_5702: d16ad07e7f2a028e14d61f570931c87fa5ce404c @ git://anongit.freedesktop.org/xorg/app/intel-gpu-tools Patchwork_17921: 77a732d46697f75e67997a7b5f8a94b21ab8e556 @ git://anongit.freedesktop.org/gfx-ci/linux piglit_4509: fdc5a4ca11124ab8413c7988896eec4c97336694 @ git://anongit.freedesktop.org/piglit == Logs == For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/Patchwork_17921/index.html _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling 2020-06-10 18:31 [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling Imre Deak ` (2 preceding siblings ...) 2020-06-11 11:00 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork @ 2020-06-11 15:38 ` Ville Syrjälä 2020-06-11 16:31 ` Imre Deak 2020-06-11 15:39 ` Ville Syrjälä 4 siblings, 1 reply; 8+ messages in thread From: Ville Syrjälä @ 2020-06-11 15:38 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx On Wed, Jun 10, 2020 at 09:31:31PM +0300, Imre Deak wrote: > On TGL+ the master transcoder's DP_TP_STATUS register should be used for > the MST ACT status handling, so make sure we do that even in case of > mulitple streams. > > This fixes an ACT timeout problem during disabling when using multiple > streams. Not sure why this was not a problem during enabling (even the > slave's DP_TP_STATUS signaled ACT correctly), but following the spec > works in that case too, so let's do that. > > There is one more place using DP_TP_STATUS, FEC enabling, but I haven't > found in BSpec which register to use in that case, so I leave the > clarification of that for later. > > BSpec: 49190 > > Signed-off-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 47 +++++++++++++++++---- > 1 file changed, 39 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index d18b406f2a7d..1c3654a117a9 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -316,6 +316,40 @@ intel_dp_mst_atomic_check(struct drm_connector *connector, > return ret; > } > > +static i915_reg_t > +master_dp_tp_status_reg(const struct intel_crtc_state *crtc_state, > + const struct intel_dp *intel_dp) > +{ > + struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev); > + > + if (INTEL_GEN(dev_priv) >= 12) > + return TGL_DP_TP_STATUS(crtc_state->mst_master_transcoder); Was going to say this needs a mst check, but then I noticed you're only changing the mst paths. So this looks like a partial take on https://patchwork.freedesktop.org/patch/364549/?series=76993&rev=2 Granted, my patch would require the crtc_state plumbing everywhere so not really bug fix material. The main question I have is why are regs.dp_tp* not being populated correctly? Pretty sure they were supposed to be. Also there are a bunch of places where we poke DP_TP_CTL in intel_ddi.c. Why aren't those a problem? > + > + return intel_dp->regs.dp_tp_status; > +} > + > +static void clear_act_sent(const struct intel_crtc_state *crtc_state, > + const struct intel_dp *intel_dp) > +{ > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > + i915_reg_t dp_tp_status_reg = > + master_dp_tp_status_reg(crtc_state, intel_dp); > + > + intel_de_write(i915, dp_tp_status_reg, > + intel_de_read(i915, dp_tp_status_reg)); > +} > + > +static bool wait_for_act_sent(const struct intel_crtc_state *crtc_state, > + const struct intel_dp *intel_dp) > +{ > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > + i915_reg_t dp_tp_status_reg = > + master_dp_tp_status_reg(crtc_state, intel_dp); > + > + return intel_de_wait_for_set(i915, dp_tp_status_reg, > + DP_TP_STATUS_ACT_SENT, 1) == 0; > +} > + > static void intel_mst_disable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > const struct intel_crtc_state *old_crtc_state, > @@ -376,8 +410,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > TRANS_DDI_FUNC_CTL(old_crtc_state->cpu_transcoder), > val); > > - if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status, > - DP_TP_STATUS_ACT_SENT, 1)) > + if (!wait_for_act_sent(old_crtc_state, intel_dp)) > drm_err(&dev_priv->drm, > "Timed out waiting for ACT sent when disabling\n"); > drm_dp_check_act_status(&intel_dp->mst_mgr); > @@ -443,7 +476,6 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > struct intel_connector *connector = > to_intel_connector(conn_state->connector); > int ret; > - u32 temp; > bool first_mst_stream; > > /* MST encoders are bound to a crtc, not to a connector, > @@ -476,8 +508,8 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > drm_err(&dev_priv->drm, "failed to allocate vcpi\n"); > > intel_dp->active_mst_links++; > - temp = intel_de_read(dev_priv, intel_dp->regs.dp_tp_status); > - intel_de_write(dev_priv, intel_dp->regs.dp_tp_status, temp); > + > + clear_act_sent(pipe_config, intel_dp); > > ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr); > > @@ -513,9 +545,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > drm_dbg_kms(&dev_priv->drm, "active links %d\n", > intel_dp->active_mst_links); > > - if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status, > - DP_TP_STATUS_ACT_SENT, 1)) > - drm_err(&dev_priv->drm, "Timed out waiting for ACT sent\n"); > + if (!wait_for_act_sent(pipe_config, intel_dp)) > + drm_err(&dev_priv->drm, "Timed out waiting for ACT sent when enabling\n"); > > drm_dp_check_act_status(&intel_dp->mst_mgr); > > -- > 2.23.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling 2020-06-11 15:38 ` [Intel-gfx] [PATCH 1/2] " Ville Syrjälä @ 2020-06-11 16:31 ` Imre Deak 0 siblings, 0 replies; 8+ messages in thread From: Imre Deak @ 2020-06-11 16:31 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx On Thu, Jun 11, 2020 at 06:38:11PM +0300, Ville Syrjälä wrote: > On Wed, Jun 10, 2020 at 09:31:31PM +0300, Imre Deak wrote: > > On TGL+ the master transcoder's DP_TP_STATUS register should be used for > > the MST ACT status handling, so make sure we do that even in case of > > mulitple streams. > > > > This fixes an ACT timeout problem during disabling when using multiple > > streams. Not sure why this was not a problem during enabling (even the > > slave's DP_TP_STATUS signaled ACT correctly), but following the spec > > works in that case too, so let's do that. > > > > There is one more place using DP_TP_STATUS, FEC enabling, but I haven't > > found in BSpec which register to use in that case, so I leave the > > clarification of that for later. > > > > BSpec: 49190 > > > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_dp_mst.c | 47 +++++++++++++++++---- > > 1 file changed, 39 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > > index d18b406f2a7d..1c3654a117a9 100644 > > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > > @@ -316,6 +316,40 @@ intel_dp_mst_atomic_check(struct drm_connector *connector, > > return ret; > > } > > > > +static i915_reg_t > > +master_dp_tp_status_reg(const struct intel_crtc_state *crtc_state, > > + const struct intel_dp *intel_dp) > > +{ > > + struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev); > > + > > + if (INTEL_GEN(dev_priv) >= 12) > > + return TGL_DP_TP_STATUS(crtc_state->mst_master_transcoder); > > Was going to say this needs a mst check, but then I noticed you're only > changing the mst paths. So this looks like a partial take on > https://patchwork.freedesktop.org/patch/364549/?series=76993&rev=2 > Granted, my patch would require the crtc_state plumbing everywhere > so not really bug fix material. Yes, this would fix the problem. > The main question I have is why are regs.dp_tp* not being populated > correctly? Pretty sure they were supposed to be. Yea, the real problem is in intel_ddi_get_config() corrupting those regs. So an alternative would be to fix that instead.. > Also there are a bunch of places where we poke DP_TP_CTL in > intel_ddi.c. Why aren't those a problem? Those happened to be correct for the actual port enabling/disabling. Only the non-primary streams were screwed up after a get_config() call. I was also a bit confused about which places need the master transcoder version of the dp_tp regs, since the spec requires this explicitly only for the ACT sent status check. But I guess we need to use the master version in all cases. > > > + > > + return intel_dp->regs.dp_tp_status; > > +} > > + > > +static void clear_act_sent(const struct intel_crtc_state *crtc_state, > > + const struct intel_dp *intel_dp) > > +{ > > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > > + i915_reg_t dp_tp_status_reg = > > + master_dp_tp_status_reg(crtc_state, intel_dp); > > + > > + intel_de_write(i915, dp_tp_status_reg, > > + intel_de_read(i915, dp_tp_status_reg)); > > +} > > + > > +static bool wait_for_act_sent(const struct intel_crtc_state *crtc_state, > > + const struct intel_dp *intel_dp) > > +{ > > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > > + i915_reg_t dp_tp_status_reg = > > + master_dp_tp_status_reg(crtc_state, intel_dp); > > + > > + return intel_de_wait_for_set(i915, dp_tp_status_reg, > > + DP_TP_STATUS_ACT_SENT, 1) == 0; > > +} > > + > > static void intel_mst_disable_dp(struct intel_atomic_state *state, > > struct intel_encoder *encoder, > > const struct intel_crtc_state *old_crtc_state, > > @@ -376,8 +410,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > > TRANS_DDI_FUNC_CTL(old_crtc_state->cpu_transcoder), > > val); > > > > - if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status, > > - DP_TP_STATUS_ACT_SENT, 1)) > > + if (!wait_for_act_sent(old_crtc_state, intel_dp)) > > drm_err(&dev_priv->drm, > > "Timed out waiting for ACT sent when disabling\n"); > > drm_dp_check_act_status(&intel_dp->mst_mgr); > > @@ -443,7 +476,6 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > > struct intel_connector *connector = > > to_intel_connector(conn_state->connector); > > int ret; > > - u32 temp; > > bool first_mst_stream; > > > > /* MST encoders are bound to a crtc, not to a connector, > > @@ -476,8 +508,8 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > > drm_err(&dev_priv->drm, "failed to allocate vcpi\n"); > > > > intel_dp->active_mst_links++; > > - temp = intel_de_read(dev_priv, intel_dp->regs.dp_tp_status); > > - intel_de_write(dev_priv, intel_dp->regs.dp_tp_status, temp); > > + > > + clear_act_sent(pipe_config, intel_dp); > > > > ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr); > > > > @@ -513,9 +545,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > > drm_dbg_kms(&dev_priv->drm, "active links %d\n", > > intel_dp->active_mst_links); > > > > - if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status, > > - DP_TP_STATUS_ACT_SENT, 1)) > > - drm_err(&dev_priv->drm, "Timed out waiting for ACT sent\n"); > > + if (!wait_for_act_sent(pipe_config, intel_dp)) > > + drm_err(&dev_priv->drm, "Timed out waiting for ACT sent when enabling\n"); > > > > drm_dp_check_act_status(&intel_dp->mst_mgr); > > > > -- > > 2.23.1 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Ville Syrjälä > Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling 2020-06-10 18:31 [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling Imre Deak ` (3 preceding siblings ...) 2020-06-11 15:38 ` [Intel-gfx] [PATCH 1/2] " Ville Syrjälä @ 2020-06-11 15:39 ` Ville Syrjälä 2020-06-11 16:37 ` Imre Deak 4 siblings, 1 reply; 8+ messages in thread From: Ville Syrjälä @ 2020-06-11 15:39 UTC (permalink / raw) To: Imre Deak; +Cc: intel-gfx On Wed, Jun 10, 2020 at 09:31:31PM +0300, Imre Deak wrote: > On TGL+ the master transcoder's DP_TP_STATUS register should be used for > the MST ACT status handling, so make sure we do that even in case of > mulitple streams. > > This fixes an ACT timeout problem during disabling when using multiple > streams. Not sure why this was not a problem during enabling (even the > slave's DP_TP_STATUS signaled ACT correctly), but following the spec > works in that case too, so let's do that. > > There is one more place using DP_TP_STATUS, FEC enabling, but I haven't > found in BSpec which register to use in that case, so I leave the > clarification of that for later. > > BSpec: 49190 > > Signed-off-by: Imre Deak <imre.deak@intel.com> > --- > drivers/gpu/drm/i915/display/intel_dp_mst.c | 47 +++++++++++++++++---- > 1 file changed, 39 insertions(+), 8 deletions(-) > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > index d18b406f2a7d..1c3654a117a9 100644 > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > @@ -316,6 +316,40 @@ intel_dp_mst_atomic_check(struct drm_connector *connector, > return ret; > } > > +static i915_reg_t > +master_dp_tp_status_reg(const struct intel_crtc_state *crtc_state, > + const struct intel_dp *intel_dp) > +{ > + struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev); > + > + if (INTEL_GEN(dev_priv) >= 12) > + return TGL_DP_TP_STATUS(crtc_state->mst_master_transcoder); > + > + return intel_dp->regs.dp_tp_status; > +} > + > +static void clear_act_sent(const struct intel_crtc_state *crtc_state, > + const struct intel_dp *intel_dp) > +{ > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > + i915_reg_t dp_tp_status_reg = > + master_dp_tp_status_reg(crtc_state, intel_dp); > + > + intel_de_write(i915, dp_tp_status_reg, > + intel_de_read(i915, dp_tp_status_reg)); Followup material: Should we actually just clear the bit(s) we care about? No idea what other stuff is in there. > +} > + > +static bool wait_for_act_sent(const struct intel_crtc_state *crtc_state, > + const struct intel_dp *intel_dp) > +{ > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > + i915_reg_t dp_tp_status_reg = > + master_dp_tp_status_reg(crtc_state, intel_dp); > + > + return intel_de_wait_for_set(i915, dp_tp_status_reg, > + DP_TP_STATUS_ACT_SENT, 1) == 0; > +} > + > static void intel_mst_disable_dp(struct intel_atomic_state *state, > struct intel_encoder *encoder, > const struct intel_crtc_state *old_crtc_state, > @@ -376,8 +410,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > TRANS_DDI_FUNC_CTL(old_crtc_state->cpu_transcoder), > val); > > - if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status, > - DP_TP_STATUS_ACT_SENT, 1)) > + if (!wait_for_act_sent(old_crtc_state, intel_dp)) > drm_err(&dev_priv->drm, > "Timed out waiting for ACT sent when disabling\n"); > drm_dp_check_act_status(&intel_dp->mst_mgr); > @@ -443,7 +476,6 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > struct intel_connector *connector = > to_intel_connector(conn_state->connector); > int ret; > - u32 temp; > bool first_mst_stream; > > /* MST encoders are bound to a crtc, not to a connector, > @@ -476,8 +508,8 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > drm_err(&dev_priv->drm, "failed to allocate vcpi\n"); > > intel_dp->active_mst_links++; > - temp = intel_de_read(dev_priv, intel_dp->regs.dp_tp_status); > - intel_de_write(dev_priv, intel_dp->regs.dp_tp_status, temp); > + > + clear_act_sent(pipe_config, intel_dp); > > ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr); > > @@ -513,9 +545,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > drm_dbg_kms(&dev_priv->drm, "active links %d\n", > intel_dp->active_mst_links); > > - if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status, > - DP_TP_STATUS_ACT_SENT, 1)) > - drm_err(&dev_priv->drm, "Timed out waiting for ACT sent\n"); > + if (!wait_for_act_sent(pipe_config, intel_dp)) > + drm_err(&dev_priv->drm, "Timed out waiting for ACT sent when enabling\n"); > > drm_dp_check_act_status(&intel_dp->mst_mgr); > > -- > 2.23.1 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx -- Ville Syrjälä Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling 2020-06-11 15:39 ` Ville Syrjälä @ 2020-06-11 16:37 ` Imre Deak 0 siblings, 0 replies; 8+ messages in thread From: Imre Deak @ 2020-06-11 16:37 UTC (permalink / raw) To: Ville Syrjälä; +Cc: intel-gfx On Thu, Jun 11, 2020 at 06:39:55PM +0300, Ville Syrjälä wrote: > On Wed, Jun 10, 2020 at 09:31:31PM +0300, Imre Deak wrote: > > On TGL+ the master transcoder's DP_TP_STATUS register should be used for > > the MST ACT status handling, so make sure we do that even in case of > > mulitple streams. > > > > This fixes an ACT timeout problem during disabling when using multiple > > streams. Not sure why this was not a problem during enabling (even the > > slave's DP_TP_STATUS signaled ACT correctly), but following the spec > > works in that case too, so let's do that. > > > > There is one more place using DP_TP_STATUS, FEC enabling, but I haven't > > found in BSpec which register to use in that case, so I leave the > > clarification of that for later. > > > > BSpec: 49190 > > > > Signed-off-by: Imre Deak <imre.deak@intel.com> > > --- > > drivers/gpu/drm/i915/display/intel_dp_mst.c | 47 +++++++++++++++++---- > > 1 file changed, 39 insertions(+), 8 deletions(-) > > > > diff --git a/drivers/gpu/drm/i915/display/intel_dp_mst.c b/drivers/gpu/drm/i915/display/intel_dp_mst.c > > index d18b406f2a7d..1c3654a117a9 100644 > > --- a/drivers/gpu/drm/i915/display/intel_dp_mst.c > > +++ b/drivers/gpu/drm/i915/display/intel_dp_mst.c > > @@ -316,6 +316,40 @@ intel_dp_mst_atomic_check(struct drm_connector *connector, > > return ret; > > } > > > > +static i915_reg_t > > +master_dp_tp_status_reg(const struct intel_crtc_state *crtc_state, > > + const struct intel_dp *intel_dp) > > +{ > > + struct drm_i915_private *dev_priv = to_i915(crtc_state->uapi.crtc->dev); > > + > > + if (INTEL_GEN(dev_priv) >= 12) > > + return TGL_DP_TP_STATUS(crtc_state->mst_master_transcoder); > > + > > + return intel_dp->regs.dp_tp_status; > > +} > > + > > +static void clear_act_sent(const struct intel_crtc_state *crtc_state, > > + const struct intel_dp *intel_dp) > > +{ > > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > > + i915_reg_t dp_tp_status_reg = > > + master_dp_tp_status_reg(crtc_state, intel_dp); > > + > > + intel_de_write(i915, dp_tp_status_reg, > > + intel_de_read(i915, dp_tp_status_reg)); > > Followup material: > Should we actually just clear the bit(s) we care about? No idea what > other stuff is in there. Yes, was thinking about that, but thought to leave it as-is for now, since enabling may depend on something that we clear there. Though clearing all the bits may break disabling, so probably better to have this change already now. > > > +} > > + > > +static bool wait_for_act_sent(const struct intel_crtc_state *crtc_state, > > + const struct intel_dp *intel_dp) > > +{ > > + struct drm_i915_private *i915 = to_i915(crtc_state->uapi.crtc->dev); > > + i915_reg_t dp_tp_status_reg = > > + master_dp_tp_status_reg(crtc_state, intel_dp); > > + > > + return intel_de_wait_for_set(i915, dp_tp_status_reg, > > + DP_TP_STATUS_ACT_SENT, 1) == 0; > > +} > > + > > static void intel_mst_disable_dp(struct intel_atomic_state *state, > > struct intel_encoder *encoder, > > const struct intel_crtc_state *old_crtc_state, > > @@ -376,8 +410,7 @@ static void intel_mst_post_disable_dp(struct intel_atomic_state *state, > > TRANS_DDI_FUNC_CTL(old_crtc_state->cpu_transcoder), > > val); > > > > - if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status, > > - DP_TP_STATUS_ACT_SENT, 1)) > > + if (!wait_for_act_sent(old_crtc_state, intel_dp)) > > drm_err(&dev_priv->drm, > > "Timed out waiting for ACT sent when disabling\n"); > > drm_dp_check_act_status(&intel_dp->mst_mgr); > > @@ -443,7 +476,6 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > > struct intel_connector *connector = > > to_intel_connector(conn_state->connector); > > int ret; > > - u32 temp; > > bool first_mst_stream; > > > > /* MST encoders are bound to a crtc, not to a connector, > > @@ -476,8 +508,8 @@ static void intel_mst_pre_enable_dp(struct intel_atomic_state *state, > > drm_err(&dev_priv->drm, "failed to allocate vcpi\n"); > > > > intel_dp->active_mst_links++; > > - temp = intel_de_read(dev_priv, intel_dp->regs.dp_tp_status); > > - intel_de_write(dev_priv, intel_dp->regs.dp_tp_status, temp); > > + > > + clear_act_sent(pipe_config, intel_dp); > > > > ret = drm_dp_update_payload_part1(&intel_dp->mst_mgr); > > > > @@ -513,9 +545,8 @@ static void intel_mst_enable_dp(struct intel_atomic_state *state, > > drm_dbg_kms(&dev_priv->drm, "active links %d\n", > > intel_dp->active_mst_links); > > > > - if (intel_de_wait_for_set(dev_priv, intel_dp->regs.dp_tp_status, > > - DP_TP_STATUS_ACT_SENT, 1)) > > - drm_err(&dev_priv->drm, "Timed out waiting for ACT sent\n"); > > + if (!wait_for_act_sent(pipe_config, intel_dp)) > > + drm_err(&dev_priv->drm, "Timed out waiting for ACT sent when enabling\n"); > > > > drm_dp_check_act_status(&intel_dp->mst_mgr); > > > > -- > > 2.23.1 > > > > _______________________________________________ > > Intel-gfx mailing list > > Intel-gfx@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/intel-gfx > > -- > Ville Syrjälä > Intel _______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/intel-gfx ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-06-11 16:37 UTC | newest] Thread overview: 8+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-06-10 18:31 [Intel-gfx] [PATCH 1/2] drm/i915/tgl+: Fix DP MST ACT status handling Imre Deak 2020-06-10 18:31 ` [Intel-gfx] [PATCH 2/2] drm/i915/dp_mst: Clear ACT sent flag before waiting for it Imre Deak 2020-06-10 19:22 ` [Intel-gfx] ✓ Fi.CI.BAT: success for series starting with [1/2] drm/i915/tgl+: Fix DP MST ACT status handling Patchwork 2020-06-11 11:00 ` [Intel-gfx] ✓ Fi.CI.IGT: " Patchwork 2020-06-11 15:38 ` [Intel-gfx] [PATCH 1/2] " Ville Syrjälä 2020-06-11 16:31 ` Imre Deak 2020-06-11 15:39 ` Ville Syrjälä 2020-06-11 16:37 ` Imre Deak
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.