Re: drm: rockchip: CONFIG_DRM_FBDEV_EMULATION will crash the HDMI down sometimes

From: Mark yao
Date: Tue Jan 17 2017 - 03:33:02 EST



static void vop_plane_atomic_update(struct drm_plane *plane,
struct drm_plane_state *old_state)
{
if (WARN_ON(!vop->is_enabled))
return;

The issues seems vop is not enable. but commit planes is using DRM_PLANE_COMMIT_ACTIVE_ONLY...

Hi Randy

Can you add some print for this bug:
1, I think vop_crtc_enable function should be call before vop_plane_atomic_update, you can add some print to verified it.
2, also add a trace on vop_crtc_disable.
3, print the status of crtc->state->active and plane_crtc_active(plane->state) when bug happen.

Thanks.
On 2017å01æ17æ 15:58, Randy Li wrote:
Hello:
I want to enable the video output at RK3288 Firefly board, but I found if I enable CONFIG_DRM_FBDEV_EMULATION, the HDMI would crash down sometimes but sometimes it works. After disable that opinion, I never meet a problem. I have not verified it with eDP as I meet a big problem in there.

[ OK ] Stopped LSB: Load kernel modules needed to enable cpufreq scaling.
[ 33.282843] [drm:drm_atomic_helper_commit_cleanup_done [drm_kms_helper]] *ERROR* [CRTC:27:crtc-0] flip_done timed out
[ 33.361489] ------------[ cut here ]------------
[ 33.366251] WARNING: CPU: 2 PID: 476 at /home/ayaka/workspace/rk3288/kernel/linux-kernel/drivers/gpu/drm/rockchip/rockchip_drm$
vop.c:730 vop_plane_atomic_update+0x1218/0x177c [rockchipdrm]
[ 33.383071] Modules linked in: rockchip_vop_reg rockchipdrm dw_hdmi_rockchip dw_hdmi drm_kms_helper cfbfillrect mali_kbase sys$
opyarea gpio_ir_recv cfbimgblt sysfillrect rc_core dwc2 sysimgblt fb_sys_fops panel_simple cfbcopyarea rk_crypto drm nvmem_rockch$
p_efuse udc_core des_generic phy_rockchip_usb pwm_rockchip pwm_bl backlight fb
[ 33.412751] CPU: 2 PID: 476 Comm: X Tainted: G W 4.10.0-rc3-next-20170111+ #148
[ 33.421182] Hardware name: Rockchip (Device Tree)
[ 33.425905] [<c0112b98>] (unwind_backtrace) from [<c010dab8>] (show_stack+0x20/0x24)
[ 33.433652] [<c010dab8>] (show_stack) from [<c044973c>] (dump_stack+0x8c/0xa0)
[ 33.440881] [<c044973c>] (dump_stack) from [<c0125f88>] (__warn+0xf8/0x110)
[ 33.447839] [<c0125f88>] (__warn) from [<c01260b8>] (warn_slowpath_null+0x30/0x38)
[ 33.455431] [<c01260b8>] (warn_slowpath_null) from [<bf5cb4dc>] (vop_plane_atomic_update+0x1218/0x177c [rockchipdrm])
[ 33.466126] [<bf5cb4dc>] (vop_plane_atomic_update [rockchipdrm]) from [<bf4d8590>] (drm_atomic_helper_commit_planes+0xd4/0x2b8
[drm_kms_helper])
[ 33.479160] [<bf4d8590>] (drm_atomic_helper_commit_planes [drm_kms_helper]) from [<bf5c6a88>] (rockchip_atomic_commit_tail+0x4$
/0x68 [rockchipdrm])
[ 33.492451] [<bf5c6a88>] (rockchip_atomic_commit_tail [rockchipdrm]) from [<bf4dc714>] (commit_tail+0x50/0xb8 [drm_kms_helper]$
[ 33.504061] [<bf4dc714>] (commit_tail [drm_kms_helper]) from [<bf4dc870>] (drm_atomic_helper_commit+0xd4/0x13c [drm_kms_helper$
)
[ 33.515850] [<bf4dc870>] (drm_atomic_helper_commit [drm_kms_helper]) from [<bf09318c>] (drm_atomic_commit+0x5c/0x68 [drm])
[ 33.527126] [<bf09318c>] (drm_atomic_commit [drm]) from [<bf4e00f8>] (restore_fbdev_mode+0x160/0x300 [drm_kms_helper])
[ 33.537952] [<bf4e00f8>] (restore_fbdev_mode [drm_kms_helper]) from [<bf4e171c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x$
0/0x84 [drm_kms_helper])
[ 33.551590] [<bf4e171c>] (drm_fb_helper_restore_fbdev_mode_unlocked [drm_kms_helper]) from [<bf5c6218>] (rockchip_drm_lastclos$
+0x1c/0x20 [rockchipdrm])
[ 33.565404] [<bf5c6218>] (rockchip_drm_lastclose [rockchipdrm]) from [<bf07d20c>] (drm_lastclose+0x48/0xd8 [drm])
[ 33.575977] [<bf07d20c>] (drm_lastclose [drm]) from [<bf07d560>] (drm_release+0x2c4/0x36c [drm])
[ 33.584927] [<bf07d560>] (drm_release [drm]) from [<c02d7b34>] (__fput+0x9c/0x1e8)
[ 33.592501] [<c02d7b34>] (__fput) from [<c02d7cf0>] (____fput+0x18/0x1c)
[ 33.599206] [<c02d7cf0>] (____fput) from [<c0146ed4>] (task_work_run+0xcc/0xf0)
[ 33.606519] [<c0146ed4>] (task_work_run) from [<c010d1b0>] (do_work_pending+0xd0/0xd4)
[ 33.614439] [<c010d1b0>] (do_work_pending) from [<c0108e28>] (slow_work_pending+0xc/0x20)
[ 33.622674] ---[ end trace 95ed2c3f167607d2 ]---
[ 33.627327] ------------[ cut here ]------------
[ 33.632013] WARNING: CPU: 2 PID: 476 at /home/ayaka/workspace/rk3288/kernel/linux-kernel/drivers/gpu/drm/rockchip/rockchip_drm_
vop.c:1017 vop_crtc_atomic_flush+0x27c/0x2b8 [rockchipdrm]
[ 33.648542] Modules linked in: rockchip_vop_reg rockchipdrm dw_hdmi_rockchip dw_hdmi drm_kms_helper cfbfillrect mali_kbase sysc
opyarea gpio_ir_recv cfbimgblt sysfillrect rc_core dwc2 sysimgblt fb_sys_fops panel_simple cfbcopyarea rk_crypto drm nvmem_rockchi
p_efuse udc_core des_generic phy_rockchip_usb pwm_rockchip pwm_bl backlight fb
[ 33.678191] CPU: 2 PID: 476 Comm: X Tainted: G W 4.10.0-rc3-next-20170111+ #148
[ 33.686621] Hardware name: Rockchip (Device Tree)
[ 33.691339] [<c0112b98>] (unwind_backtrace) from [<c010dab8>] (show_stack+0x20/0x24)
[ 33.699084] [<c010dab8>] (show_stack) from [<c044973c>] (dump_stack+0x8c/0xa0)
[ 33.706309] [<c044973c>] (dump_stack) from [<c0125f88>] (__warn+0xf8/0x110)
[ 33.713275] [<c0125f88>] (__warn) from [<c01260b8>] (warn_slowpath_null+0x30/0x38)
[ 33.720864] [<c01260b8>] (warn_slowpath_null) from [<bf5c83e0>] (vop_crtc_atomic_flush+0x27c/0x2b8 [rockchipdrm])
[ 33.731208] [<bf5c83e0>] (vop_crtc_atomic_flush [rockchipdrm]) from [<bf4d868c>] (drm_atomic_helper_commit_planes+0x1d0/0x2b8 [
drm_kms_helper])
[ 33.744159] [<bf4d868c>] (drm_atomic_helper_commit_planes [drm_kms_helper]) from [<bf5c6a88>] (rockchip_atomic_commit_tail+0x44
/0x68 [rockchipdrm])
[ 33.757451] [<bf5c6a88>] (rockchip_atomic_commit_tail [rockchipdrm]) from [<bf4dc714>] (commit_tail+0x50/0xb8 [drm_kms_helper])
[ 33.769064] [<bf4dc714>] (commit_tail [drm_kms_helper]) from [<bf4dc870>] (drm_atomic_helper_commit+0xd4/0x13c [drm_kms_helper]
)
[ 33.780861] [<bf4dc870>] (drm_atomic_helper_commit [drm_kms_helper]) from [<bf09318c>] (drm_atomic_commit+0x5c/0x68 [drm])
[ 33.792131] [<bf09318c>] (drm_atomic_commit [drm]) from [<bf4e00f8>] (restore_fbdev_mode+0x160/0x300 [drm_kms_helper])
[ 33.802956] [<bf4e00f8>] (restore_fbdev_mode [drm_kms_helper]) from [<bf4e171c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x4
0/0x84 [drm_kms_helper])
[ 33.816590] [<bf4e171c>] (drm_fb_helper_restore_fbdev_mode_unlocked [drm_kms_helper]) from [<bf5c6218>] (rockchip_drm_lastclose
+0x1c/0x20 [rockchipdrm])
[ 33.830406] [<bf5c6218>] (rockchip_drm_lastclose [rockchipdrm]) from [<bf07d20c>] (drm_lastclose+0x48/0xd8 [drm])
[ 33.840975] [<bf07d20c>] (drm_lastclose [drm]) from [<bf07d560>] (drm_release+0x2c4/0x36c [drm])
[ 33.849923] [<bf07d560>] (drm_release [drm]) from [<c02d7b34>] (__fput+0x9c/0x1e8)
[ 33.857497] [<c02d7b34>] (__fput) from [<c02d7cf0>] (____fput+0x18/0x1c)
[ 33.864201] [<c02d7cf0>] (____fput) from [<c0146ed4>] (task_work_run+0xcc/0xf0)
[ 33.871514] [<c0146ed4>] (task_work_run) from [<c010d1b0>] (do_work_pending+0xd0/0xd4)
[ 33.879434] [<c010d1b0>] (do_work_pending) from [<c0108e28>] (slow_work_pending+0xc/0x20)
[ 33.887671] ---[ end trace 95ed2c3f167607d3 ]---
[ 33.892322] ------------[ cut here ]------------
[ 33.897058] WARNING: CPU: 2 PID: 476 at /home/ayaka/workspace/rk3288/kernel/linux-kernel/drivers/gpu/drm/drm_atomic_helper.c:15
63 drm_atomic_helper_commit_hw_done+0xc0/0xc8 [drm_kms_helper]
[ 33.913937] Modules linked in: rockchip_vop_reg rockchipdrm dw_hdmi_rockchip dw_hdmi drm_kms_helper cfbfillrect mali_kbase sysc
opyarea gpio_ir_recv cfbimgblt sysfillrect rc_core dwc2 sysimgblt fb_sys_fops panel_simple cfbcopyarea rk_crypto drm nvmem_rockchi
p_efuse udc_core des_generic phy_rockchip_usb pwm_rockchip pwm_bl backlight fb
[ 33.943581] CPU: 2 PID: 476 Comm: X Tainted: G W 4.10.0-rc3-next-20170111+ #148
[ 33.952010] Hardware name: Rockchip (Device Tree)
[ 33.956726] [<c0112b98>] (unwind_backtrace) from [<c010dab8>] (show_stack+0x20/0x24)
[ 33.964470] [<c010dab8>] (show_stack) from [<c044973c>] (dump_stack+0x8c/0xa0)
[ 33.971695] [<c044973c>] (dump_stack) from [<c0125f88>] (__warn+0xf8/0x110)
[ 33.978661] [<c0125f88>] (__warn) from [<c01260b8>] (warn_slowpath_null+0x30/0x38)
[ 33.986301] [<c01260b8>] (warn_slowpath_null) from [<bf4d9410>] (drm_atomic_helper_commit_hw_done+0xc0/0xc8 [drm_kms_helper])
[ 33.997686] [<bf4d9410>] (drm_atomic_helper_commit_hw_done [drm_kms_helper]) from [<bf5c6a90>] (rockchip_atomic_commit_tail+0x4
c/0x68 [rockchipdrm])
[ 34.011062] [<bf5c6a90>] (rockchip_atomic_commit_tail [rockchipdrm]) from [<bf4dc714>] (commit_tail+0x50/0xb8 [drm_kms_helper])
[ 34.022670] [<bf4dc714>] (commit_tail [drm_kms_helper]) from [<bf4dc870>] (drm_atomic_helper_commit+0xd4/0x13c [drm_kms_helper]
)
[ 34.034458] [<bf4dc870>] (drm_atomic_helper_commit [drm_kms_helper]) from [<bf09318c>] (drm_atomic_commit+0x5c/0x68 [drm])
[ 34.045728] [<bf09318c>] (drm_atomic_commit [drm]) from [<bf4e00f8>] (restore_fbdev_mode+0x160/0x300 [drm_kms_helper])
[ 34.056555] [<bf4e00f8>] (restore_fbdev_mode [drm_kms_helper]) from [<bf4e171c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x4
0/0x84 [drm_kms_helper])
[ 34.070190] [<bf4e171c>] (drm_fb_helper_restore_fbdev_mode_unlocked [drm_kms_helper]) from [<bf5c6218>] (rockchip_drm_lastclose
+0x1c/0x20 [rockchipdrm])
[ 34.084005] [<bf5c6218>] (rockchip_drm_lastclose [rockchipdrm]) from [<bf07d20c>] (drm_lastclose+0x48/0xd8 [drm])
[ 34.094581] [<bf07d20c>] (drm_lastclose [drm]) from [<bf07d560>] (drm_release+0x2c4/0x36c [drm])
[ 34.103526] [<bf07d560>] (drm_release [drm]) from [<c02d7b34>] (__fput+0x9c/0x1e8)
[ 34.111099] [<c02d7b34>] (__fput) from [<c02d7cf0>] (____fput+0x18/0x1c)
[ 34.117802] [<c02d7cf0>] (____fput) from [<c0146ed4>] (task_work_run+0xcc/0xf0)
[ 34.125115] [<c0146ed4>] (task_work_run) from [<c010d1b0>] (do_work_pending+0xd0/0xd4)
[ 34.133034] [<c010d1b0>] (do_work_pending) from [<c0108e28>] (slow_work_pending+0xc/0x20)
[ 34.141250] ---[ end trace 95ed2c3f167607d4 ]---
[ 34.145921] ------------[ cut here ]------------
[ 34.150566] WARNING: CPU: 2 PID: 476 at /home/ayaka/workspace/rk3288/kernel/linux-kernel/drivers/gpu/drm/rockchip/rockchip_drm_
vop.c:828 vop_crtc_enable_vblank+0x1ac/0x1b4 [rockchipdrm]
[ 34.167054] Modules linked in: rockchip_vop_reg rockchipdrm dw_hdmi_rockchip dw_hdmi drm_kms_helper cfbfillrect mali_kbase sysc
opyarea gpio_ir_recv cfbimgblt sysfillrect rc_core dwc2 sysimgblt fb_sys_fops panel_simple cfbcopyarea rk_crypto drm nvmem_rockchi
p_efuse udc_core des_generic phy_rockchip_usb pwm_rockchip pwm_bl backlight fb
[ 34.196651] CPU: 2 PID: 476 Comm: X Tainted: G W 4.10.0-rc3-next-20170111+ #148
[ 34.205078] Hardware name: Rockchip (Device Tree)
[ 34.209794] [<c0112b98>] (unwind_backtrace) from [<c010dab8>] (show_stack+0x20/0x24)
[ 34.217538] [<c010dab8>] (show_stack) from [<c044973c>] (dump_stack+0x8c/0xa0)
[ 34.224763] [<c044973c>] (dump_stack) from [<c0125f88>] (__warn+0xf8/0x110)
[ 34.231729] [<c0125f88>] (__warn) from [<c01260b8>] (warn_slowpath_null+0x30/0x38)
[ 34.239318] [<c01260b8>] (warn_slowpath_null) from [<bf5c7b7c>] (vop_crtc_enable_vblank+0x1ac/0x1b4 [rockchipdrm])
[ 34.249693] [<bf5c7b7c>] (vop_crtc_enable_vblank [rockchipdrm]) from [<bf5c61f0>] (rockchip_drm_crtc_enable_vblank+0x48/0x54 [r
ockchipdrm])
[ 34.262378] [<bf5c61f0>] (rockchip_drm_crtc_enable_vblank [rockchipdrm]) from [<bf07ff80>] (drm_vblank_enable+0x8c/0xf8 [drm])
[ 34.274077] [<bf07ff80>] (drm_vblank_enable [drm]) from [<bf0800b4>] (drm_vblank_get+0xc8/0xf0 [drm])
[ 34.283616] [<bf0800b4>] (drm_vblank_get [drm]) from [<bf0800fc>] (drm_crtc_vblank_get+0x20/0x24 [drm])
[ 34.293239] [<bf0800fc>] (drm_crtc_vblank_get [drm]) from [<bf4dc00c>] (drm_atomic_helper_wait_for_vblanks.part.0+0xa8/0x2a8 [d
rm_kms_helper])
[ 34.306146] [<bf4dc00c>] (drm_atomic_helper_wait_for_vblanks.part.0 [drm_kms_helper]) from [<bf4dc230>] (drm_atomic_helper_wait
_for_vblanks+0x24/0x28 [drm_kms_helper])
[ 34.321176] [<bf4dc230>] (drm_atomic_helper_wait_for_vblanks [drm_kms_helper]) from [<bf5c6a9c>] (rockchip_atomic_commit_tail+0
x58/0x68 [rockchipdrm])
[ 34.334725] [<bf5c6a9c>] (rockchip_atomic_commit_tail [rockchipdrm]) from [<bf4dc714>] (commit_tail+0x50/0xb8 [drm_kms_helper])
[ 34.346330] [<bf4dc714>] (commit_tail [drm_kms_helper]) from [<bf4dc870>] (drm_atomic_helper_commit+0xd4/0x13c [drm_kms_helper]
)
[ 34.358117] [<bf4dc870>] (drm_atomic_helper_commit [drm_kms_helper]) from [<bf09318c>] (drm_atomic_commit+0x5c/0x68 [drm])
[ 34.369386] [<bf09318c>] (drm_atomic_commit [drm]) from [<bf4e00f8>] (restore_fbdev_mode+0x160/0x300 [drm_kms_helper])
[ 34.380209] [<bf4e00f8>] (restore_fbdev_mode [drm_kms_helper]) from [<bf4e171c>] (drm_fb_helper_restore_fbdev_mode_unlocked+0x4
0/0x84 [drm_kms_helper])
[ 34.393845] [<bf4e171c>] (drm_fb_helper_restore_fbdev_mode_unlocked [drm_kms_helper]) from [<bf5c6218>] (rockchip_drm_lastclose
+0x1c/0x20 [rockchipdrm])
[ 34.407664] [<bf5c6218>] (rockchip_drm_lastclose [rockchipdrm]) from [<bf07d20c>] (drm_lastclose+0x48/0xd8 [drm])
[ 34.418237] [<bf07d20c>] (drm_lastclose [drm]) from [<bf07d560>] (drm_release+0x2c4/0x36c [drm])
[ 34.427179] [<bf07d560>] (drm_release [drm]) from [<c02d7b34>] (__fput+0x9c/0x1e8)
[ 34.434754] [<c02d7b34>] (__fput) from [<c02d7cf0>] (____fput+0x18/0x1c)
[ 34.441458] [<c02d7cf0>] (____fput) from [<c0146ed4>] (task_work_run+0xcc/0xf0)
[ 34.448769] [<c0146ed4>] (task_work_run) from [<c010d1b0>] (do_work_pending+0xd0/0xd4)
[ 34.456688] [<c010d1b0>] (do_work_pending) from [<c0108e28>] (slow_work_pending+0xc/0x20)
[ 34.464856] ---[ end trace 95ed2c3f167607d5 ]---


--
ïark Yao