diff mbox series

drm/ast: astdp: Fix timeout for enabling video signal

Message ID 20250127134423.84266-1-tzimmermann@suse.de (mailing list archive)
State New, archived
Headers show
Series drm/ast: astdp: Fix timeout for enabling video signal | expand

Commit Message

Thomas Zimmermann Jan. 27, 2025, 1:44 p.m. UTC
The ASTDP transmitter sometimes takes up to second for enabling the
video signal, while the timeout is only 200 msec. This results in a
kernel error message. Increase the timeout to 1 second. An example
of the error message is shown below.

[  697.084433] ------------[ cut here ]------------
[  697.091115] ast 0000:02:00.0: [drm] drm_WARN_ON(!__ast_dp_wait_enable(ast, enabled))
[  697.091233] WARNING: CPU: 1 PID: 160 at drivers/gpu/drm/ast/ast_dp.c:232 ast_dp_set_enable+0x123/0x140 [ast]
[...]
[  697.272469] RIP: 0010:ast_dp_set_enable+0x123/0x140 [ast]
[...]
[  697.415283] Call Trace:
[  697.420727]  <TASK>
[  697.425908]  ? show_trace_log_lvl+0x196/0x2c0
[  697.433304]  ? show_trace_log_lvl+0x196/0x2c0
[  697.440693]  ? drm_atomic_helper_commit_modeset_enables+0x30a/0x470
[  697.450115]  ? ast_dp_set_enable+0x123/0x140 [ast]
[  697.458059]  ? __warn.cold+0xaf/0xca
[  697.464713]  ? ast_dp_set_enable+0x123/0x140 [ast]
[  697.472633]  ? report_bug+0x134/0x1d0
[  697.479544]  ? handle_bug+0x58/0x90
[  697.486127]  ? exc_invalid_op+0x13/0x40
[  697.492975]  ? asm_exc_invalid_op+0x16/0x20
[  697.500224]  ? preempt_count_sub+0x14/0xc0
[  697.507473]  ? ast_dp_set_enable+0x123/0x140 [ast]
[  697.515377]  ? ast_dp_set_enable+0x123/0x140 [ast]
[  697.523227]  drm_atomic_helper_commit_modeset_enables+0x30a/0x470
[  697.532388]  drm_atomic_helper_commit_tail+0x58/0x90
[  697.540400]  ast_mode_config_helper_atomic_commit_tail+0x30/0x40 [ast]
[  697.550009]  commit_tail+0xfe/0x1d0
[  697.556547]  drm_atomic_helper_commit+0x198/0x1c0

This is a cosmetical problem. Enabling the video signal still works
even with the error message. The problem has always been present, but
only recent versions of the ast driver warn about missing the timeout.

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Fixes: 4e29cc7c5c67 ("drm/ast: astdp: Replace ast_dp_set_on_off()")
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Cc: Jocelyn Falempe <jfalempe@redhat.com>
Cc: Dave Airlie <airlied@redhat.com>
Cc: dri-devel@lists.freedesktop.org
Cc: <stable@vger.kernel.org> # v6.13+
---
 drivers/gpu/drm/ast/ast_dp.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Jocelyn Falempe Jan. 27, 2025, 2:07 p.m. UTC | #1
On 27/01/2025 14:44, Thomas Zimmermann wrote:
> The ASTDP transmitter sometimes takes up to second for enabling the
> video signal, while the timeout is only 200 msec. This results in a
> kernel error message. Increase the timeout to 1 second. An example
> of the error message is shown below.
> 
> [  697.084433] ------------[ cut here ]------------
> [  697.091115] ast 0000:02:00.0: [drm] drm_WARN_ON(!__ast_dp_wait_enable(ast, enabled))
> [  697.091233] WARNING: CPU: 1 PID: 160 at drivers/gpu/drm/ast/ast_dp.c:232 ast_dp_set_enable+0x123/0x140 [ast]
> [...]
> [  697.272469] RIP: 0010:ast_dp_set_enable+0x123/0x140 [ast]
> [...]
> [  697.415283] Call Trace:
> [  697.420727]  <TASK>
> [  697.425908]  ? show_trace_log_lvl+0x196/0x2c0
> [  697.433304]  ? show_trace_log_lvl+0x196/0x2c0
> [  697.440693]  ? drm_atomic_helper_commit_modeset_enables+0x30a/0x470
> [  697.450115]  ? ast_dp_set_enable+0x123/0x140 [ast]
> [  697.458059]  ? __warn.cold+0xaf/0xca
> [  697.464713]  ? ast_dp_set_enable+0x123/0x140 [ast]
> [  697.472633]  ? report_bug+0x134/0x1d0
> [  697.479544]  ? handle_bug+0x58/0x90
> [  697.486127]  ? exc_invalid_op+0x13/0x40
> [  697.492975]  ? asm_exc_invalid_op+0x16/0x20
> [  697.500224]  ? preempt_count_sub+0x14/0xc0
> [  697.507473]  ? ast_dp_set_enable+0x123/0x140 [ast]
> [  697.515377]  ? ast_dp_set_enable+0x123/0x140 [ast]
> [  697.523227]  drm_atomic_helper_commit_modeset_enables+0x30a/0x470
> [  697.532388]  drm_atomic_helper_commit_tail+0x58/0x90
> [  697.540400]  ast_mode_config_helper_atomic_commit_tail+0x30/0x40 [ast]
> [  697.550009]  commit_tail+0xfe/0x1d0
> [  697.556547]  drm_atomic_helper_commit+0x198/0x1c0
> 
> This is a cosmetical problem. Enabling the video signal still works
> even with the error message. The problem has always been present, but
> only recent versions of the ast driver warn about missing the timeout.

Thanks, it looks good to me.

Reviewed-by: Jocelyn Falempe <jfalempe@redhat.com>

> 
> Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
> Fixes: 4e29cc7c5c67 ("drm/ast: astdp: Replace ast_dp_set_on_off()")
> Cc: Thomas Zimmermann <tzimmermann@suse.de>
> Cc: Jocelyn Falempe <jfalempe@redhat.com>
> Cc: Dave Airlie <airlied@redhat.com>
> Cc: dri-devel@lists.freedesktop.org
> Cc: <stable@vger.kernel.org> # v6.13+
> ---
>   drivers/gpu/drm/ast/ast_dp.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/gpu/drm/ast/ast_dp.c b/drivers/gpu/drm/ast/ast_dp.c
> index 30aad5c0112a1..2d7482a65f62a 100644
> --- a/drivers/gpu/drm/ast/ast_dp.c
> +++ b/drivers/gpu/drm/ast/ast_dp.c
> @@ -201,7 +201,7 @@ static bool __ast_dp_wait_enable(struct ast_device *ast, bool enabled)
>   	if (enabled)
>   		vgacrdf_test |= AST_IO_VGACRDF_DP_VIDEO_ENABLE;
>   
> -	for (i = 0; i < 200; ++i) {
> +	for (i = 0; i < 1000; ++i) {
>   		if (i)
>   			mdelay(1);
>   		vgacrdf = ast_get_index_reg_mask(ast, AST_IO_VGACRI, 0xdf,
diff mbox series

Patch

diff --git a/drivers/gpu/drm/ast/ast_dp.c b/drivers/gpu/drm/ast/ast_dp.c
index 30aad5c0112a1..2d7482a65f62a 100644
--- a/drivers/gpu/drm/ast/ast_dp.c
+++ b/drivers/gpu/drm/ast/ast_dp.c
@@ -201,7 +201,7 @@  static bool __ast_dp_wait_enable(struct ast_device *ast, bool enabled)
 	if (enabled)
 		vgacrdf_test |= AST_IO_VGACRDF_DP_VIDEO_ENABLE;
 
-	for (i = 0; i < 200; ++i) {
+	for (i = 0; i < 1000; ++i) {
 		if (i)
 			mdelay(1);
 		vgacrdf = ast_get_index_reg_mask(ast, AST_IO_VGACRI, 0xdf,