On 2015年11月12日 14:27, Mark yao wrote: > On 2015年11月11日 00:56, Thierry Reding wrote: >> On Tue, Nov 10, 2015 at 03:01:03PM +0000, Liviu Dudau wrote: >>> Hello, >>> >>> When booting my Juno board with the HDLCD driver that I have converted to >>> atomic operations I'm getting the following warning: >> Perhaps you can provide pointers to the source code, that might make it >> easier for people to spot what's going wrong. >> >> Thierry >> >> >> _______________________________________________ >> dri-devel mailing list >> dri-devel@lists.freedesktop.org >> http://lists.freedesktop.org/mailman/listinfo/dri-devel > Hi Thierry > I encountered the same problem as Liviu. > I'm coverting rockchip drm to atomic api, when booting with hdmi > connected, get under warning: > > [ 1.300156] WARNING: CPU: 0 PID: 26 at > drivers/gpu/drm/drm_atomic_helper.c:674 > drm_atomic_helper_update_legacy_modeset_state+0x3c/0x1f8() > [ 1.300161] Modules linked in: > [ 1.300171] CPU: 0 PID: 26 Comm: kworker/0:1 Not tainted 4.3.0-rc5+ > #160 > [ 1.300174] Hardware name: Rockchip (Device Tree) > [ 1.300189] Workqueue: events output_poll_execute > [ 1.300224] [] (unwind_backtrace) from [] > (show_stack+0x10/0x14) > [ 1.300241] [] (show_stack) from [] > (dump_stack+0x6c/0x88) > [ 1.300255] [] (dump_stack) from [] > (warn_slowpath_common+0x80/0xa8) > [ 1.300265] [] (warn_slowpath_common) from [] > (warn_slowpath_null+0x18/0x1c) > [ 1.300277] [] (warn_slowpath_null) from [] > (drm_atomic_helper_update_legacy_modeset_state+0x3c/0x1f8) > [ 1.300293] [] > (drm_atomic_helper_update_legacy_modeset_state) from [] > (drm_atomic_helper_commit_modeset_disables+0x208/0x364) > [ 1.300305] [] > (drm_atomic_helper_commit_modeset_disables) from [] > (drm_atomic_helper_commit+0xf8/0x140) > [ 1.300320] [] (drm_atomic_helper_commit) from > [] (drm_atomic_commit+0x50/0x60) > [ 1.300333] [] (drm_atomic_commit) from [] > (restore_fbdev_mode+0xf4/0x278) > [ 1.300345] [] (restore_fbdev_mode) from [] > (drm_fb_helper_restore_fbdev_mode_unlocked+0x30/0x68) > [ 1.300357] [] > (drm_fb_helper_restore_fbdev_mode_unlocked) from [] > (drm_fb_helper_set_par+0x3c/0x54) > [ 1.300368] [] (drm_fb_helper_set_par) from [] > (drm_fb_helper_hotplug_event+0xe4/0xfc) > [ 1.300382] [] (drm_fb_helper_hotplug_event) from > [] (drm_kms_helper_hotplug_event+0x24/0x28) > [ 1.300396] [] (drm_kms_helper_hotplug_event) from > [] (output_poll_execute+0x134/0x18c) > [ 1.300413] [] (output_poll_execute) from [] > (process_one_work+0x1e0/0x318) > [ 1.300426] [] (process_one_work) from [] > (worker_thread+0x378/0x4c4) > [ 1.300438] [] (worker_thread) from [] > (kthread+0xdc/0xf0) > [ 1.300450] [] (kthread) from [] > (ret_from_fork+0x14/0x3c) > > I can't found who can set encoder->crtc value before atomic_commit, > what's going wrong? > > -- > Mark Yao Hi here is the message before warning happen (filtering by "dmesg | grep drm"), Hope this helps: [ 1.245700] [drm:drm_minor_register] [ 1.245925] [drm:drm_minor_register] new minor registered 64 [ 1.245934] [drm:drm_minor_register] [ 1.245942] [drm:drm_minor_register] [ 1.246099] [drm:drm_minor_register] new minor registered 0 [ 1.272968] rockchip-drm display-subsystem: bound ff940000.vop (ops vop_component_ops) [ 1.294790] rockchip-drm display-subsystem: bound ff930000.vop (ops vop_component_ops) [ 1.295086] rockchip-drm display-subsystem: bound ff980000.hdmi (ops dw_hdmi_rockchip_ops) [ 1.295218] [drm:drm_sysfs_connector_add] adding "HDMI-A-1" to sysfs [ 1.295222] [drm:drm_sysfs_hotplug_event] generating hotplug event [ 1.295268] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013). [ 1.295270] [drm] No driver support for vblank timestamp query. [ 1.295290] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:29:HDMI-A-1] [ 1.295304] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:29:HDMI-A-1] status updated from 3 to 1 [ 1.295470] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter rk3x-i2c [ 1.295513] [drm:drm_mode_debug_printmodeline] Modeline 30:"640x480" 0 25175 640 656 752 800 480 490 492 525 0x40 0xa [ 1.295518] [drm:drm_mode_prune_invalid] Not using 640x480 mode: BAD [ 1.295531] [drm:drm_mode_debug_printmodeline] Modeline 33:"848x480" 0 33750 848 864 976 1088 480 486 494 517 0x40 0x5 [ 1.295535] [drm:drm_mode_prune_invalid] Not using 848x480 mode: BAD [ 1.295543] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:29:HDMI-A-1] probed modes : [ 1.295555] [drm:drm_mode_debug_printmodeline] Modeline 34:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [ 1.295564] [drm:drm_mode_debug_printmodeline] Modeline 32:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [ 1.295573] [drm:drm_mode_debug_printmodeline] Modeline 31:"800x600" 56 36000 800 824 896 1024 600 601 603 625 0x40 0x5 [ 1.295581] [drm:drm_setup_crtcs] [ 1.295594] [drm:drm_enable_connectors] connector 29 enabled? yes [ 1.295601] [drm:drm_target_preferred] looking for cmdline mode on connector 29 [ 1.295606] [drm:drm_target_preferred] looking for preferred mode on connector 29 0 [ 1.295609] [drm:drm_target_preferred] found mode 1024x768 [ 1.295614] [drm:drm_setup_crtcs] picking CRTCs for 4096x4096 config [ 1.295623] [drm:drm_setup_crtcs] desired mode 1024x768 set on crtc 20 (0,0) [ 1.299403] [drm:rockchip_drm_fbdev_create] FB [1024x768]-24 kvaddr=f0121000 offset=0 size=3145728 [ 1.299512] [drm:drm_sysfs_hotplug_event] generating hotplug event [ 1.299540] [drm:drm_fb_helper_hotplug_event] [ 1.299546] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:29:HDMI-A-1] [ 1.299712] [drm:drm_do_probe_ddc_edid] drm: skipping non-existent adapter rk3x-i2c [ 1.299750] [drm:drm_mode_debug_printmodeline] Modeline 35:"640x480" 0 25175 640 656 752 800 480 490 492 525 0x40 0xa [ 1.299755] [drm:drm_mode_prune_invalid] Not using 640x480 mode: BAD [ 1.299764] [drm:drm_mode_debug_printmodeline] Modeline 38:"848x480" 0 33750 848 864 976 1088 480 486 494 517 0x40 0x5 [ 1.299769] [drm:drm_mode_prune_invalid] Not using 848x480 mode: BAD [ 1.299776] [drm:drm_helper_probe_single_connector_modes_merge_bits] [CONNECTOR:29:HDMI-A-1] probed modes : [ 1.299786] [drm:drm_mode_debug_printmodeline] Modeline 34:"1024x768" 60 65000 1024 1048 1184 1344 768 771 777 806 0x40 0xa [ 1.299795] [drm:drm_mode_debug_printmodeline] Modeline 32:"800x600" 60 40000 800 840 968 1056 600 601 605 628 0x40 0x5 [ 1.299804] [drm:drm_mode_debug_printmodeline] Modeline 31:"800x600" 56 36000 800 824 896 1024 600 601 603 625 0x40 0x5 [ 1.299811] [drm:drm_setup_crtcs] [ 1.299818] [drm:drm_enable_connectors] connector 29 enabled? yes [ 1.299822] [drm:drm_target_preferred] looking for cmdline mode on connector 29 [ 1.299827] [drm:drm_target_preferred] looking for preferred mode on connector 29 0 [ 1.299831] [drm:drm_target_preferred] found mode 1024x768 [ 1.299836] [drm:drm_setup_crtcs] picking CRTCs for 4096x4096 config [ 1.299842] [drm:drm_setup_crtcs] desired mode 1024x768 set on crtc 20 (0,0) [ 1.299857] [drm:drm_atomic_state_init] Allocated atomic state ee38ebc0 [ 1.299868] [drm:drm_atomic_get_plane_state] Added [PLANE:18] ee38eac0 state to ee38ebc0 [ 1.299875] [drm:drm_atomic_get_plane_state] Added [PLANE:19] ee38ea80 state to ee38ebc0 [ 1.299880] [drm:drm_atomic_set_crtc_for_plane] Link plane state ee38ea80 to [NOCRTC] [ 1.299885] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ee38ea80 [ 1.299892] [drm:drm_atomic_get_plane_state] Added [PLANE:21] ee38ea40 state to ee38ebc0 [ 1.299897] [drm:drm_atomic_set_crtc_for_plane] Link plane state ee38ea40 to [NOCRTC] [ 1.299901] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ee38ea40 [ 1.299907] [drm:drm_atomic_get_plane_state] Added [PLANE:22] ee38ea00 state to ee38ebc0 [ 1.299911] [drm:drm_atomic_set_crtc_for_plane] Link plane state ee38ea00 to [NOCRTC] [ 1.299916] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ee38ea00 [ 1.299922] [drm:drm_atomic_get_plane_state] Added [PLANE:23] ee38e9c0 state to ee38ebc0 [ 1.299929] [drm:drm_atomic_get_plane_state] Added [PLANE:24] ee38e980 state to ee38ebc0 [ 1.299933] [drm:drm_atomic_set_crtc_for_plane] Link plane state ee38e980 to [NOCRTC] [ 1.299937] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ee38e980 [ 1.299943] [drm:drm_atomic_get_plane_state] Added [PLANE:26] ee38e940 state to ee38ebc0 [ 1.299947] [drm:drm_atomic_set_crtc_for_plane] Link plane state ee38e940 to [NOCRTC] [ 1.299951] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ee38e940 [ 1.299958] [drm:drm_atomic_get_plane_state] Added [PLANE:27] ee38e900 state to ee38ebc0 [ 1.299962] [drm:drm_atomic_set_crtc_for_plane] Link plane state ee38e900 to [NOCRTC] [ 1.299966] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ee38e900 [ 1.299975] [drm:drm_atomic_get_crtc_state] Added [CRTC:20] ee340000 state to ee38ebc0 [ 1.299985] [drm:drm_atomic_set_mode_for_crtc] Set [MODE:1024x768] for CRTC state ee340000 [ 1.299990] [drm:drm_atomic_set_crtc_for_plane] Link plane state ee38eac0 to [CRTC:20] [ 1.299995] [drm:drm_framebuffer_reference] ee20f640: FB ID: 33 (1) [ 1.300000] [drm:drm_atomic_set_fb_for_plane] Set [FB:33] for plane state ee38eac0 [ 1.300008] [drm:drm_atomic_get_connector_state] Added [CONNECTOR:29] ee38e8c0 state to ee38ebc0 [ 1.300015] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:20] to ee38ebc0 [ 1.300021] [drm:drm_atomic_set_crtc_for_connector] Link connector state ee38e8c0 to [CRTC:20] [ 1.300033] [drm:drm_atomic_get_crtc_state] Added [CRTC:25] ee393e00 state to ee38ebc0 [ 1.300038] [drm:drm_atomic_set_mode_for_crtc] Set [NOMODE] for CRTC state ee393e00 [ 1.300043] [drm:drm_atomic_set_crtc_for_plane] Link plane state ee38e9c0 to [NOCRTC] [ 1.300047] [drm:drm_atomic_set_fb_for_plane] Set [NOFB] for plane state ee38e9c0 [ 1.300053] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:20] to ee38ebc0 [ 1.300059] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:25] to ee38ebc0 [ 1.300067] [drm:drm_atomic_connectors_for_crtc] State ee38ebc0 has 1 connectors for [CRTC:20] [ 1.300071] [drm:drm_atomic_check_only] checking ee38ebc0 [ 1.300079] [drm:drm_atomic_helper_check_modeset] [CRTC:20] mode changed [ 1.300083] [drm:drm_atomic_helper_check_modeset] [CRTC:20] enable changed [ 1.300088] [drm:update_connector_routing] Updating routing for [CONNECTOR:29:HDMI-A-1] [ 1.300095] [drm:update_connector_routing] [CONNECTOR:29:HDMI-A-1] using [ENCODER:28:TMDS-28] on [CRTC:20] [ 1.300100] [drm:drm_atomic_helper_check_modeset] [CRTC:20] active changed [ 1.300105] [drm:drm_atomic_helper_check_modeset] [CRTC:20] needs all connectors, enable: y, active: y [ 1.300111] [drm:drm_atomic_add_affected_connectors] Adding all current connectors for [CRTC:20] to ee38ebc0 [ 1.300117] [drm:drm_atomic_connectors_for_crtc] State ee38ebc0 has 1 connectors for [CRTC:20] [ 1.300130] [drm:drm_atomic_commit] commiting ee38ebc0 [ 1.300156] WARNING: CPU: 0 PID: 26 at drivers/gpu/drm/drm_atomic_helper.c:674 drm_atomic_helper_update_legacy_modeset_state+0x3c/0x1f8() -- Mark Yao