Skip to content

Commit aa7bf89

Browse files
committed
drm/mcde: Fix stability issue
Whenever a display update was sent, apart from updating the memory base address, we called mcde_display_send_one_frame() which also sent a command to the display requesting the TE IRQ and enabling the FIFO. When continuous updates are running this is wrong: we need to only send this to start the flow to the display on the very first update. This lead to the display pipeline locking up and crashing. Check if the flow is already running and in that case do not call mcde_display_send_one_frame(). This fixes crashes on the Samsung GT-S7710 (Skomer). Signed-off-by: Linus Walleij <[email protected]> Acked-by: Sam Ravnborg <[email protected]> Acked-by: Stephan Gerhold <[email protected]> Cc: Stephan Gerhold <[email protected]> Cc: [email protected] Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent 07c08f5 commit aa7bf89

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

drivers/gpu/drm/mcde/mcde_display.c

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1060,9 +1060,14 @@ static void mcde_display_update(struct drm_simple_display_pipe *pipe,
10601060
*/
10611061
if (fb) {
10621062
mcde_set_extsrc(mcde, drm_fb_cma_get_gem_addr(fb, pstate, 0));
1063-
if (!mcde->video_mode)
1064-
/* Send a single frame using software sync */
1065-
mcde_display_send_one_frame(mcde);
1063+
if (!mcde->video_mode) {
1064+
/*
1065+
* Send a single frame using software sync if the flow
1066+
* is not active yet.
1067+
*/
1068+
if (mcde->flow_active == 0)
1069+
mcde_display_send_one_frame(mcde);
1070+
}
10661071
dev_info_once(mcde->dev, "sent first display update\n");
10671072
} else {
10681073
/*

0 commit comments

Comments
 (0)