Exynos vblank timeout issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello,

I'm trying to get Android 12 up and running on my Galaxy Note 10.1 which
is based on Exynos 4412 with a Mali GPU. For Android 11, I had no issues
with graphics but after upgrading and building Android 12, I'm getting a
vblank wait timeout shortly after starting the device setup, which in
turn leads to my display turning black and SurfaceFlinger hanging. This
can be reliably reproduced after every reboot, so much so that it's
basically always on the exact same step of the setup.

I'm using the following setup:

* 5.10.101 Android Common Kernel with some patches to get
the Note 10.1 up and running
* Exynos FIMD + Lima GPU driver
* android-12.1.0_r5 branch
* drm-hwcomposer main branch
* mesa main branch
* minigbm from the GloDroid project

I tried several older versions of hwc, mesa and minigbm with no success,
same problem on all of them. What I found is that, if I disable overlay
planes and only the primary plane is used, it works without any issues.
Adding the second plane is fine as well, but the third one triggers the
problem. For some reason, this didn't happen on Android 11 though and
nothing changed on the kernel side, I was using the same kernel for it.

Unfortunately, there is not a lot going on in the logging. In logcat I
can see the following messages:

E hwc-drm-atomic-state-manager:sync_wait(fd=33) returned: -1 (errno: 62)
E hwc-drm-atomic-state-manager: Failed to commit pset ret=-16
E hwc-drm-atomic-state-manager: Composite failed for pipeline VGA-1
E Fence: waitForever: Throttling EGL Production: fence 431 didn't
signal in 3000 ms
W OpenGLRenderer: dequeueBuffer failed,error = -110;


Here is the dmesg output of it:

[   55.106235] [drm:drm_ioctl] comm="composer@2.4-se" pid=266,
dev=0xe200, auth=1, DRM_IOCTL_MODE_ATOMIC
[   55.106264] [drm:drm_atomic_state_init] Allocated atomic state
a07053f4
[   55.106299] [drm:drm_mode_object_get] OBJ ID: 73 (2)
[   55.106313] [drm:drm_atomic_get_plane_state] Added [PLANE:31:plane-0]
ff8c5726 state to a07053f4
[   55.106327] [drm:drm_mode_object_get] OBJ ID: 60 (1)
[   55.106339] [drm:drm_atomic_get_crtc_state] Added [CRTC:54:crtc-0]
33284f8c state to a07053f4
[   55.106367] [drm:drm_atomic_set_fb_for_plane] Set [FB:73] for
[PLANE:31:plane-0] state ff8c5726
[   55.106385] [drm:drm_mode_object_get] OBJ ID: 73 (5)
[   55.106395] [drm:drm_mode_object_put.part.0] OBJ ID: 73 (6)
[   55.106415] [drm:drm_mode_object_put.part.0] OBJ ID: 73 (5)
[   55.106426] [drm:drm_mode_object_put.part.0] OBJ ID: 73 (4)
[   55.106449] [drm:drm_mode_object_get] OBJ ID: 72 (2)
[   55.106462] [drm:drm_atomic_get_plane_state] Added [PLANE:34:plane-1]
b6a2ee22 state to a07053f4
[   55.106479] [drm:drm_atomic_set_fb_for_plane] Set [FB:72] for
[PLANE:34:plane-1] state b6a2ee22
[   55.106490] [drm:drm_mode_object_get] OBJ ID: 72 (5)
[   55.106500] [drm:drm_mode_object_put.part.0] OBJ ID: 72 (6)
[   55.106510] [drm:drm_mode_object_put.part.0] OBJ ID: 72 (5)
[   55.106520] [drm:drm_mode_object_put.part.0] OBJ ID: 72 (4)
[   55.106540] [drm:drm_mode_object_get] OBJ ID: 68 (2)
[   55.106552] [drm:drm_atomic_get_plane_state] Added [PLANE:39:plane-2]
aba4b1f1 state to a07053f4
[   55.106568] [drm:drm_atomic_set_fb_for_plane] Set [FB:61] for
[PLANE:39:plane-2] state aba4b1f1
[   55.106578] [drm:drm_mode_object_get] OBJ ID: 61 (3)
[   55.106588] [drm:drm_mode_object_put.part.0] OBJ ID: 68 (3)
[   55.106599] [drm:drm_mode_object_put.part.0] OBJ ID: 61 (4)
[   55.106608] [drm:drm_mode_object_put.part.0] OBJ ID: 61 (3)
[   55.106628] [drm:drm_mode_object_get] OBJ ID: 66 (2)
[   55.106639] [drm:drm_atomic_get_plane_state] Added [PLANE:44:plane-3]
08e79ee6 state to a07053f4
[   55.106656] [drm:drm_atomic_set_fb_for_plane] Set [FB:66] for
[PLANE:44:plane-3] state 08e79ee6
[   55.106666] [drm:drm_mode_object_get] OBJ ID: 66 (5)
[   55.106677] [drm:drm_mode_object_put.part.0] OBJ ID: 66 (6)
[   55.106687] [drm:drm_mode_object_put.part.0] OBJ ID: 66 (5)
[   55.106697] [drm:drm_mode_object_put.part.0] OBJ ID: 66 (4)
[   55.106739] [drm:drm_atomic_check_only] checking a07053f4
[   55.106769] exynos-drm exynos-drm: [drm:exynos_plane_atomic_check]
plane : offset_x/y(0,0), width/height(4,800)
[   55.106785] exynos-drm exynos-drm: [drm:exynos_plane_atomic_check]
plane : offset_x/y(4,0), width/height(1276,800)
[   55.106798] exynos-drm exynos-drm: [drm:exynos_plane_atomic_check]
plane : offset_x/y(0,0), width/height(1280,800)
[   55.106813] exynos-drm exynos-drm: [drm:exynos_plane_atomic_check]
plane : offset_x/y(0,776), width/height(1280,24)
[   55.106827] [drm:drm_atomic_nonblocking_commit] committing a07053f4
nonblocking
[   55.106905] exynos-drm exynos-drm:
[drm:drm_calc_timestamping_constants] crtc 54: hwmode: htotal 1350,
vtotal 823, vdisplay 800
[   55.106922] exynos-drm exynos-drm:
[drm:drm_calc_timestamping_constants] crtc 54: clock 66663 kHz framedur
16666666 linedur 20251
[   55.106949] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] start
addr = 0x22f013f0, end addr = 0x232e93f0, size = 0x3e8000
[   55.106962] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane]
ovl_width = 4, ovl_height = 800
[   55.106977] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] osd
pos: tx = 0, ty = 0, bx = 3, by = 799
[   55.106989] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] osd
size = 0xc80
[   55.107005] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] start
addr = 0x21300000, end addr = 0x216e8000, size = 0x3e8000
[   55.107017] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane]
ovl_width = 1276, ovl_height = 800
[   55.107031] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] osd
pos: tx = 4, ty = 0, bx = 1279, by = 799
[   55.107043] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] osd
size = 0xf9380
[   55.107061] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] start
addr = 0x20500000, end addr = 0x208e8000, size = 0x3e8000
[   55.107073] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane]
ovl_width = 1280, ovl_height = 800
[   55.107086] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] osd
pos: tx = 0, ty = 0, bx = 1279, by = 799
[   55.107097] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] osd
size = 0xfa000
[   55.107115] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] start
addr = 0x22800000, end addr = 0x2281e000, size = 0x1e000
[   55.107127] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane]
ovl_width = 1280, ovl_height = 24
[   55.107140] exynos4-fb 11c00000.fimd: [drm:fimd_update_plane] osd
pos: tx = 0, ty = 776, bx = 1279, by = 799
[   55.107168] exynos-drm exynos-drm: [drm:drm_update_vblank_count]
updating vblank count on crtc 0: current=3108, diff=0, hw=0 hw_last=0
[   55.172238] [drm:drm_ioctl] comm="RenderThread" pid=1145, dev=0xe281,
auth=1, DRM_IOCTL_SYNCOBJ_HANDLE_TO_FD
[   55.215253] ------------[ cut here ]------------
[   55.215285] WARNING: CPU: 1 PID: 115 at
../drivers/gpu/drm/drm_atomic_helper.c:1513
drm_atomic_helper_wait_for_vblanks.part.1+0x2b8/0x2bc
[   55.215294] [CRTC:54:crtc-0] vblank wait timed out
[   55.215299] Modules linked in: s5p_mfc s5p_jpeg v4l2_mem2mem
videobuf2_dma_contig videobuf2_memops videobuf2_v4l2 videobuf2_common
rfcomm kheaders hidp hci_uart cpufreq_userspace cpufreq_powersave
cpufreq_conservative btbcm brcmfmac brcmutil bnep bluetooth atmel_mxt_ts
[   55.215402] CPU: 1 PID: 115 Comm: kworker/u8:2 Tainted: G        W
5.10.101+ #15
[   55.215408] Hardware name: Samsung Exynos (Flattened Device Tree)
[   55.215421] Workqueue: events_unbound commit_work
[   55.215430] Backtrace: 
[   55.215449] [<c010d9c4>] (dump_backtrace) from [<c010dd18>]
(show_stack+0x20/0x24)
[   55.215460] r7:60000013 r6:c13c6d8c r5:00000000 r4:c13c6d8c
[   55.215473] [<c010dcf8>] (show_stack) from [<c0cd3e7c>]
(dump_stack_lvl+0x90/0xa4)
[   55.215485] [<c0cd3dec>] (dump_stack_lvl) from [<c0cd3ea8>]
(dump_stack+0x18/0x1c)
[   55.215496] r9:c070cab4 r8:000005e9 r7:00000009 r6:00000000
r5:c102b268 r4:c2165dec
[   55.215511] [<c0cd3e90>] (dump_stack) from [<c0138098>]
(__warn+0x110/0x114)
[   55.215523] [<c0137f88>] (__warn) from [<c0138124>]
(warn_slowpath_fmt+0x88/0xc4)
[   55.215534] r9:00000009 r8:c070cab4 r7:000005e9 r6:c102b268
r5:c102b7dc r4:c2164000
[   55.215550] [<c01380a0>] (warn_slowpath_fmt) from [<c070cab4>]
(drm_atomic_helper_wait_for_vblanks.part.1+0x2b8/0x2bc)
[   55.215561] r9:00000000 r8:00000001 r7:00000000 r6:00000000
r5:00000000 r4:c213d000
[   55.215575] [<c070c7fc>] (drm_atomic_helper_wait_for_vblanks.part.1)
from [<c070e31c>] (drm_atomic_helper_commit_tail_rpm+0x6c/0x7c)
[   55.215586] r10:c13cdc78 r9:00000000 r8:00000000 r7:d4511ee8
r6:0000000c r5:c213c800
[   55.215592] r4:d0e42b00
[   55.215603] [<c070e2b0>] (drm_atomic_helper_commit_tail_rpm) from
[<c070e724>] (commit_tail+0xb8/0x1d4)
[   55.215611] r5:00000000 r4:d0e42b00
[   55.215621] [<c070e66c>] (commit_tail) from [<c070e85c>]
(commit_work+0x1c/0x20)
[   55.215632] r10:c141cfe0 r9:00000000 r8:00000000 r7:c1c0f000
r6:c1c0a400 r5:c1f16080
[   55.215638] r4:d0e42b30
[   55.215650] [<c070e840>] (commit_work) from [<c01583b8>]
(process_one_work+0x1b0/0x594)
[   55.215661] [<c0158208>] (process_one_work) from [<c01587f8>]
(worker_thread+0x5c/0x550)
[   55.215672] r10:c1303d00 r9:00000088 r8:ffffe000 r7:c1c0a418
r6:c1f16094 r5:c1c0a400
[   55.215678] r4:c1f16080
[   55.215692] [<c015879c>] (worker_thread) from [<c0160bc0>]
(kthread+0x198/0x1b0)
[   55.215703] r10:c215be74 r9:00000000 r8:c1f16080 r7:c015879c
r6:c2164000 r5:c1f0d140
[   55.215710] r4:c211e200
[   55.215722] [<c0160a28>] (kthread) from [<c0100148>]
(ret_from_fork+0x14/0x2c)
[   55.215729] Exception stack(0xc2165fb0 to 0xc2165ff8)
[   55.215738] 5fa0:                                     00000000
00000000 00000000 00000000
[   55.215749] 5fc0: 00000000 00000000 00000000 00000000 00000000
00000000 00000000 00000000
[   55.215758] 5fe0: 00000000 00000000 00000000 00000000 00000013
00000000
[   55.215769] r10:00000000 r9:00000000 r8:00000000 r7:00000000
r6:00000000 r5:c0160a28
[   55.215775] r4:c1f0d140
[   55.215782] ---[ end trace 3478b4dd7c26b793 ]---
[   55.215804] [drm:drm_atomic_state_default_clear] Clearing atomic
state a07053f4
[   55.215820] [drm:drm_mode_object_put.part.0] OBJ ID: 60 (2)
[   55.215833] [drm:drm_mode_object_put.part.0] OBJ ID: 73 (3)
[   55.215844] [drm:drm_mode_object_put.part.0] OBJ ID: 72 (3)
[   55.215855] [drm:drm_mode_object_put.part.0] OBJ ID: 68 (2)
[   55.215865] [drm:drm_mode_object_put.part.0] OBJ ID: 66 (3)
[   55.215876] [drm:__drm_atomic_state_free] Freeing atomic state
a07053f4


If I can provide anything else that would be helpful to analyze this
problem, I'm happy to assist.

Kind Regards
Martin



[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux