[SRU,Cosmic] drm/amd/display: Fix MST dp_blank REG_WAIT timeout

Message ID 20190206191509.8503-1-dan.streetman@canonical.com
State New
Headers show
Series
  • [SRU,Cosmic] drm/amd/display: Fix MST dp_blank REG_WAIT timeout
Related show

Commit Message

Dan Streetman Feb. 6, 2019, 7:15 p.m.
From: "Jerry (Fangzhi) Zuo" <Jerry.Zuo@amd.com>

BugLink: https://bugs.launchpad.net/bugs/1814308

Need to blank stream before deallocate MST payload.

[drm:generic_reg_wait [amdgpu]] *ERROR* REG_WAIT timeout 10us * 3000 tries - dce110_stream_encoder_dp_blank line:944
------------[ cut here ]------------
WARNING: CPU: 0 PID: 2201 at /var/lib/dkms/amdgpu/18.50-690240/build/amd/amdgpu/../display/dc/dc_helper.c:249 generic_reg_wait+0xe7/0x160 [amdgpu]
Call Trace:
 dce110_stream_encoder_dp_blank+0x11c/0x180 [amdgpu]
 core_link_disable_stream+0x40/0x230 [amdgpu]
 ? generic_reg_update_ex+0xdb/0x130 [amdgpu]
 dce110_reset_hw_ctx_wrap+0xb7/0x1f0 [amdgpu]
 dce110_apply_ctx_to_hw+0x30/0x430 [amdgpu]
 ? dce110_apply_ctx_for_surface+0x206/0x260 [amdgpu]
 dc_commit_state+0x2ba/0x4d0 [amdgpu]
 amdgpu_dm_atomic_commit_tail+0x297/0xd70 [amdgpu]
 ? amdgpu_bo_pin_restricted+0x58/0x260 [amdgpu]
 ? wait_for_completion_timeout+0x1f/0x120
 ? wait_for_completion_interruptible+0x1c/0x160
 commit_tail+0x3d/0x60 [drm_kms_helper]
 drm_atomic_helper_commit+0xf6/0x100 [drm_kms_helper]
 drm_atomic_connector_commit_dpms+0xe5/0xf0 [drm]
 drm_mode_obj_set_property_ioctl+0x14f/0x250 [drm]
 drm_mode_connector_property_set_ioctl+0x2e/0x40 [drm]
 drm_ioctl+0x1e0/0x430 [drm]
 ? drm_mode_connector_set_obj_prop+0x70/0x70 [drm]
 ? ep_read_events_proc+0xb0/0xb0
 ? ep_scan_ready_list.constprop.18+0x1e6/0x1f0
 ? timerqueue_add+0x52/0x80
 amdgpu_drm_ioctl+0x49/0x80 [amdgpu]
 do_vfs_ioctl+0x90/0x5f0
 SyS_ioctl+0x74/0x80
 do_syscall_64+0x74/0x140
 entry_SYSCALL_64_after_hwframe+0x3d/0xa2
---[ end trace 3ed7b77a97d60f72 ]---

Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
Reviewed-by: Hersen Wu <hersenxs.wu@amd.com>
Acked-by: Harry Wentland <harry.wentland@amd.com>
Acked-by: Alex Deucher <alexander.deucher@amd.com>
Tested-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org
Signed-off-by: Dan Streetman <ddstreet@canonical.com>
(cherry-picked from commit 8c9d90eebd23b6d40ddf4ce5df5ca2b932336a06)
---
 drivers/gpu/drm/amd/display/dc/core/dc_link.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Stefan Bader Feb. 7, 2019, 8:26 a.m. | #1
On 06.02.19 20:15, Dan Streetman wrote:
> From: "Jerry (Fangzhi) Zuo" <Jerry.Zuo@amd.com>
> 
> BugLink: https://bugs.launchpad.net/bugs/1814308
> 
> Need to blank stream before deallocate MST payload.
> 
> [drm:generic_reg_wait [amdgpu]] *ERROR* REG_WAIT timeout 10us * 3000 tries - dce110_stream_encoder_dp_blank line:944
> ------------[ cut here ]------------
> WARNING: CPU: 0 PID: 2201 at /var/lib/dkms/amdgpu/18.50-690240/build/amd/amdgpu/../display/dc/dc_helper.c:249 generic_reg_wait+0xe7/0x160 [amdgpu]
> Call Trace:
>  dce110_stream_encoder_dp_blank+0x11c/0x180 [amdgpu]
>  core_link_disable_stream+0x40/0x230 [amdgpu]
>  ? generic_reg_update_ex+0xdb/0x130 [amdgpu]
>  dce110_reset_hw_ctx_wrap+0xb7/0x1f0 [amdgpu]
>  dce110_apply_ctx_to_hw+0x30/0x430 [amdgpu]
>  ? dce110_apply_ctx_for_surface+0x206/0x260 [amdgpu]
>  dc_commit_state+0x2ba/0x4d0 [amdgpu]
>  amdgpu_dm_atomic_commit_tail+0x297/0xd70 [amdgpu]
>  ? amdgpu_bo_pin_restricted+0x58/0x260 [amdgpu]
>  ? wait_for_completion_timeout+0x1f/0x120
>  ? wait_for_completion_interruptible+0x1c/0x160
>  commit_tail+0x3d/0x60 [drm_kms_helper]
>  drm_atomic_helper_commit+0xf6/0x100 [drm_kms_helper]
>  drm_atomic_connector_commit_dpms+0xe5/0xf0 [drm]
>  drm_mode_obj_set_property_ioctl+0x14f/0x250 [drm]
>  drm_mode_connector_property_set_ioctl+0x2e/0x40 [drm]
>  drm_ioctl+0x1e0/0x430 [drm]
>  ? drm_mode_connector_set_obj_prop+0x70/0x70 [drm]
>  ? ep_read_events_proc+0xb0/0xb0
>  ? ep_scan_ready_list.constprop.18+0x1e6/0x1f0
>  ? timerqueue_add+0x52/0x80
>  amdgpu_drm_ioctl+0x49/0x80 [amdgpu]
>  do_vfs_ioctl+0x90/0x5f0
>  SyS_ioctl+0x74/0x80
>  do_syscall_64+0x74/0x140
>  entry_SYSCALL_64_after_hwframe+0x3d/0xa2
> ---[ end trace 3ed7b77a97d60f72 ]---
> 
> Signed-off-by: Jerry (Fangzhi) Zuo <Jerry.Zuo@amd.com>
> Reviewed-by: Hersen Wu <hersenxs.wu@amd.com>
> Acked-by: Harry Wentland <harry.wentland@amd.com>
> Acked-by: Alex Deucher <alexander.deucher@amd.com>
> Tested-by: Lyude Paul <lyude@redhat.com>
> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
> Cc: stable@vger.kernel.org

(cherry picked from commit 8c9d90eebd23b6d40ddf4ce5df5ca2b932336a06)
> Signed-off-by: Dan Streetman <ddstreet@canonical.com>
Acked-by: Stefan Bader <stefan.bader@canonical.com>
> ---

The cherry picked (no hyphen!) goes before the signed off.

>  drivers/gpu/drm/amd/display/dc/core/dc_link.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> index 6ccd59b87403..b6cbc787efaf 100644
> --- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> +++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
> @@ -2448,11 +2448,11 @@ void core_link_disable_stream(struct pipe_ctx *pipe_ctx, int option)
>  {
>  	struct dc  *core_dc = pipe_ctx->stream->ctx->dc;
>  
> +	core_dc->hwss.blank_stream(pipe_ctx);
> +
>  	if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST)
>  		deallocate_mst_payload(pipe_ctx);
>  
> -	core_dc->hwss.blank_stream(pipe_ctx);
> -
>  	core_dc->hwss.disable_stream(pipe_ctx, option);
>  
>  	disable_link(pipe_ctx->stream->sink->link, pipe_ctx->stream->signal);
>

Patch

diff --git a/drivers/gpu/drm/amd/display/dc/core/dc_link.c b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
index 6ccd59b87403..b6cbc787efaf 100644
--- a/drivers/gpu/drm/amd/display/dc/core/dc_link.c
+++ b/drivers/gpu/drm/amd/display/dc/core/dc_link.c
@@ -2448,11 +2448,11 @@  void core_link_disable_stream(struct pipe_ctx *pipe_ctx, int option)
 {
 	struct dc  *core_dc = pipe_ctx->stream->ctx->dc;
 
+	core_dc->hwss.blank_stream(pipe_ctx);
+
 	if (pipe_ctx->stream->signal == SIGNAL_TYPE_DISPLAY_PORT_MST)
 		deallocate_mst_payload(pipe_ctx);
 
-	core_dc->hwss.blank_stream(pipe_ctx);
-
 	core_dc->hwss.disable_stream(pipe_ctx, option);
 
 	disable_link(pipe_ctx->stream->sink->link, pipe_ctx->stream->signal);